php连接状态测试(运行中 关闭浏览器)

今天遇到个问题,php怎样去检测客户端是否已经断开连接呢?

开始的时候以为就用函数connection_aborted()或者connection_status()函数就可以知道了,

谁知道坑爹的没反应.

后来通过测试和google找到了方法

其实关键其实就在flush函数,因为php没有通过刷新缓冲区和使用flush()的时候是整个文件输出到客户端内容的.

当输出到客户端的时候实际上php已经运行完了.

所以当使用flush()函数时候,php会马上将输出的内容发送到客户端,但假如客户端已经中断连接的话,服务器就会知道客户端已经中止连接了.

表达能力不是很好,有些错或者看不懂的可以告诉我,谢谢

下面是测试代码:


ob_start();
ignore_user_abort(TRUE);//允许php忽略用客户端中断
$fp = fopen('connection_test.txt','w+');
fwrite($fp, "start run\r\n");
for($i=0, $counter=10;$i<$counter;$i++){
    if(connection_aborted()){
        //提示如果客户端断开连接则在文件里输入提示并停止脚本
        fwrite($fp, "user aborted the connection, connection_status return ".connection_status()."\r\nend run\r\n");
        exit;
    }else{
        //输出并记录当前状态
        fwrite($fp, $i." ".connection_status()." ".connection_aborted()." ".time()."\r\n");
        echo $i." ".connection_status()." ".connection_aborted()." ".time()."\r\n";
        //下面是刷新php缓冲区,并马上向客户端发送缓冲区内容
        ob_flush();//刷新php缓冲区
        flush();//所有输出发送到用户的浏览器
        ob_end_flush();
    }
    sleep(2);//ZZZzzzz.....
}
ob_end_clean();
fwrite($fp, "end run\r\n");
fclose($fp);







转载于:https://my.oschina.net/kamizero/blog/139148

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值