后端开发|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 的内核
但这样做的代价未免也太大了