后台PHP脚本判断客户端是否中断(数据是否真正的发到前端)

原创 2013年12月05日 15:03:29

这个问题,搜索一下,不知道有多少种回答,但是很多回答的都不准确,我测试总结一下

首先是都认可的要判断connection_status()或connection_aborted(),但是这两个状态的值,必须是向前端发送数据后,才能获得,即无法被动获得,只能主动获得

因此判断客户端是否中断的方法也就只能是,后端向前端发送数据后,判断connection_status()或connection_aborted()的返回值


<?php

ignore_user_abort(true);  //如果不忽略,那当下面的flush执行后,程序立即退出

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
ob_flush();
flush();
//控制浏览器前端不要缓存结果,每次都要重新查询

$maxvid = $_GET["maxvid"];
error_log(date("[Y-m-d H:i:s]")." > "."maxvid: ".$maxvid."\n", 3 , "/usr/local/apache2219/logs/php_log");

$gmworker = new GearmanWorker();
$gmworker->setTimeout(60000);
$gmworker->addServer();
$gmworker->addFunction("getmsg", "getmsg");

if ( ($gmworker->work()) && ($gmworker->returnCode() == GEARMAN_SUCCESS) )
{
  echo $msg;
  ob_flush();  //必须有,不然是在PHP_BUFFER不会被发送到客户端,也检查不出是否中断
  flush();     //必须设置ignore_user_abort(true),不然程序直接退出了,无法再判断连接状态
  if ( connection_status() ) {
    error_log(date("[Y-m-d H:i:s]")." < ".$msg.",but connection aborted!\n", 3 , "/usr/local/apache2219/logs/php_log");
  } else {
    error_log(date("[Y-m-d H:i:s]")." < ".$msg."\n", 3 , "/usr/local/apache2219/logs/php_log");
  }
}

function getmsg($job)
{
  global $msg;

  $msg = $job->workload();

  $result = "OK";

  return $result;
}

?>


前后端分离的j2ee的web项目设计,怎么判断用户是否登录?

两种方式: 1将用户信息写入cookie(可以将cookie理解为一个Map,写如cookie即cookie.put("userDetail");)。即输入用户名和密码,执行ajax去后台,如果登录...
  • Ideality_hunter
  • Ideality_hunter
  • 2017年06月06日 11:45
  • 1629

java后台判断客户端是手机/PC并返回不同页面

这个代码其实不是由我本人发现的,而是在翻看公司项目时无意间发现,觉得很实用所以拿出来大家分享。 框架:Struts2+spring+ibatis,    主要实现是依靠Http请求头Hea...
  • lkx94
  • lkx94
  • 2016年08月18日 07:56
  • 1710

PHP判断客户端是否使用代理服务器及其匿名级别

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。 具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器。 匿名级别可以参考下表来判断。 给...
  • alexdream
  • alexdream
  • 2011年01月06日 14:09
  • 7637

使用angel proxy 的 客户端脚本(目前只支持php)

  • 2010年01月30日 17:41
  • 536B
  • 下载

前端之PHP基础(还有客户端、服务器、数据库交互基础)

因为本人对JS非常熟悉,所以学习PHP的基础知识比较容易,也是看了一些相关培训视频,做了一些笔记 这些笔记其实不那么重要,就是一些API而已,最重要的是理解客户端、服务器、数据库交互的方式,如下图: ...
  • mengxiang_go
  • mengxiang_go
  • 2017年04月20日 16:46
  • 534

一套基于 C# 实现的JSON 生成器可传输数据到客户端JavaScript后台类库源码

  • 2009年02月20日 12:41
  • 66KB
  • 下载

php调用shell脚本(web端和客户端同时实现)

想这个问题有一段时间了,一开始想实现的功能是在web端点击一个按钮,然后liunx主机采集图像,在浏览器上显示。于是自然而然的想到了php调用shell脚本。查了很多资料。实现了。 下面开始讲解。本例...
  • qq_25800609
  • qq_25800609
  • 2015年11月06日 20:45
  • 1336

PHP漏洞全解(三)-客户端脚本植入

客户端脚本植入(Script Insertion),是指将可以执行的脚本插入到表单、图片、动画或超链接文字等对象内。当用户打开这些对象后,攻击者所植入的脚本就会被执行,进而开始攻击。可以被用作脚本植入...
  • nanshan_hzq
  • nanshan_hzq
  • 2011年07月25日 17:05
  • 1191

PHP漏洞全解(二)-客户端脚本植入

本文主要介绍针对PHP网站的客户端脚本植入攻击方式。所谓客户端脚本植入攻击,是指将可以执行的脚本插入到表单、图片、动画或超链接文字等对象内。当用户打开这些对象后,黑客所植入的脚本就会被执行,进而开始攻...
  • u013474436
  • u013474436
  • 2015年12月11日 11:42
  • 583

PHP漏洞全解(三)-客户端脚本植入

本文主要介绍针对PHP网站的客户端脚本植入攻击方式。所谓客户端脚本植入攻击,是指将可以执行的脚本插入到表单、图片、动画或超链接文字等对象内。当用户打开这些对象后,黑客所植入的脚本就会被执行,进而开始攻...
  • black_OX
  • black_OX
  • 2012年09月21日 10:50
  • 2155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:后台PHP脚本判断客户端是否中断(数据是否真正的发到前端)
举报原因:
原因补充:

(最多只允许输入30个字)