博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php连接状态测试(运行中 关闭浏览器)
阅读量:7192 次
发布时间:2019-06-29

本文共 1120 字,大约阅读时间需要 3 分钟。

hot3.png

今天遇到个问题,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

你可能感兴趣的文章
php实现排列组合
查看>>
Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装
查看>>
Redis配置文件详解
查看>>
python学习day4之路文件的序列化和反序列化
查看>>
ArrayList和LinkedList区别及性能测试
查看>>
高精度模板
查看>>
mysql5.7 多级主从+multisource
查看>>
linux 查看文件夹大小 du命令
查看>>
Web前端性能优化之反向代理
查看>>
linux中cron用法
查看>>
Java后台获取Html5拍照的照片并下载的实例方法
查看>>
河马MySQL注入工具v1.1
查看>>
UTR#2 T1
查看>>
Flask-在Flask中跨请求传递数据资源
查看>>
继承c3,网络编程,相互通信
查看>>
django 基础进阶ORM 2
查看>>
AndroidStudio安装流程 以及 使用过程中出现的异常
查看>>
SQL查询语句
查看>>
[转] sql存储过程去锁
查看>>
bzoj1242(弦图判定)
查看>>