使用到一下php函数
ignore_user_abort(setting)
setting 可选。如果设置为 TRUE,则忽略与用户的断开(脚本将继续运行,需要手动添加 exit(); 停止,否则就一直运行直到超时。)。默认情况下是设置为 FALSE,与客户机断开会导致脚本停止运行。
定义和用法
connection_status() //函数返回当前的连接状态。
可返回的可能值:
0 - CONNECTION_NORMAL - 连接运行正常
1 - CONNECTION_ABORTED - 连接由用户或网络错误终止
2 - CONNECTION_TIMEOUT - 连接超时
3 - CONNECTION_ABORTED & CONNECTION_TIMEOUT
<?php new A; class A { public function __construct() { ignore_user_abort(true); set_time_limit(0); ini_set('max_execution_time', '0'); (new B())->BB(); } } class B { public function BB() { $time = time(); while(1) { // Did the connection fail? if(connection_status()) { file_put_contents('aass.log', connection_status()."结束了". PHP_EOL, FILE_APPEND | LOCK_EX); exit(); } // Sleep for 1 seconds sleep(1); file_put_contents('aass.log', time() - $time.'s' . PHP_EOL, FILE_APPEND | LOCK_EX); ob_flush(); flush(); } } }
注意 如果设置set_time_limit(10);(10 s 后超时,注意的时 sleep(10) 不计入时间set_time_limit(10));
评论