1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 的用法php脚本 判断客户端浏览器是否已经断开连接

的用法php脚本 判断客户端浏览器是否已经断开连接

时间:2024-01-25 10:17:49

相关推荐

的用法php脚本 判断客户端浏览器是否已经断开连接

后端开发|php教程

nbsp,php,connection,TIMEOUT,ABORTED

后端开发-php教程

如何用php脚本 判断客户端浏览器是否已经断开连接?

曾经看到一个人贴:

网站注册系统源码,vscode 查询文件名,ubuntu所以快捷,怎样修改Tomcat编码,野林爬虫,lnmp php版本切换,房地产seo推广策划,在线视频教育门户网站 源码,常用个人简历word模板lzw

在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况:

0 – NORMAL(正常)

1 – ABORTED(退出)

2 – TIMEOUT(超时)

易语言改电脑密码源码,vscode2077,ubuntu断电开不了机,tomcat 频繁启动,sqlite 3存储过程,dede excel插件,前端主流技术框架学习,爬虫js怎么抓取,php 释放变量,seo sem培训,cms美食网站模板,鼠标滚轮缩放网页,discuz户外模板,提示跳转页面模板,华科企业网站管理系统,京东怎么用白条在微信小程序里lzw

当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限(请参阅 set_time_limit() 函数)时,TIMEOUT 状态的标记将被打开。

您可以决定您的脚本是否需要在客户端中断连接时退出。有时候让您的脚本完整的运行会带来很多方便,即时没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 设置中对应的“php_value ignore_user_abort”以及 ignore_user_abort() 函数来控制。如果您没有告诉 PHP 忽略用户的中断,您的脚本将会被中断,除非您通过 register_shutdown_function() 设置了关闭触发函数。通过该关闭出发函数,当远程用户点击 STOP 按钮后,您的脚本再次尝试输出数据时,PHP 将会检测到连接已被中断,并调用关闭触发函数。

您的脚本也有可能被内置的脚本计时器中断。默认得超时限制为 30 秒。这个值可以通过设置 php.ini 的 max_execution_time 或 Apache.conf 设置中对应的“php_value max_execution_time”参数或者 set_time_limit() 函数来更改。当计数器超时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,您可以通过调用 connection_status() 函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用,该函数将返回 2。

需要注意的一点是 ABORTED 和 TIMEOUT 状态可以同时有效。这在你告诉 PHP 忽略用户的退出操作时是可能的。PHP 将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时您会发现函数 connection_status() 返回 3。

会员资源下载站源码,keil工程vscode,ubuntu启动后卡死,tomcat 8 停止,能打开sqlite软件,phpweb产品分类插件,前端移动端框架大全,实战数据爬虫,php 页面 跳转,淘宝seo引擎,资源软件分享网站源码,php单网页模板下载地址,登录注册页面切换模板,首页新闻动态页面制作代码,php库存进销管理系统,jsp网页调用本地程序lzw

但是我测试的结果是,如果后端没有向前端输出的话,比如在一个死循环的While处理中,没有向前端输出内容,那connection_status()永远都是0,根本不知道前端断开了。

分享到:更多

——解决方案——————–

对!php 只在执行输出语句时才检查用户连接是否有效

如果想要及时发现,需要修改 php 的内核

但这样做的代价未免也太大了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。