登录/注册 登录
密码登录 验证码登录 忘记密码
快捷登录/注册
Upload
提交

php 使用 connection_status 检测客户端断开后继续处理后续代码

使用到一下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));

感谢您的阅读,本文为正版软件资讯 | 阅木有原创内容,转载时请标注来源于正版软件资讯 | 阅木有和本文链接

评论