停止ignore_user_abort

1.一般来说,使用这个函数都是因为有些比较费时的操作,所以别忘了先设置set_time_limit(0),否则超时后照样会停止的
2.如果在运行中没有输出,那么不管是否用这个函数,php都会运行到底的。因为php每接到一个请求都会运行,而如果运行过程中有输出的 话,php就能检测到客户端是否已经断开,如果没有断开,就继续运行;如果断开了,就停止运行了。所以没有输出的话,php会一直运行下去。
看下面代码:
echo "ok";// #1
function sf(){
    for ($i = 1; $i <= 10; $i ++){
        $a .= ‘‘;
        echo ‘ok‘;// #2
        sleep(2);
    }
    $fp = fopen("sf.txt", "wb");
    fwrite($fp, $a);
    fclose($fp);
}
sf();
echo ‘ok‘;// #3
 
#1 #2 和#3 都是输出,由于是自上而下运行的,而函数sf才是费时操作,所以只有#2的输出检测到客户端断开的话才能让程序停止。
 
补充:如果输出的内容很小,则可能会被PHP缓存,这样的话PHP还是检测不到客户端状态的。
所以还要把缓存释放并输出到浏览器
上面的代码还要在前面加上:
ob_end_flush();//或ob_end_clean();(停止缓存)
ob_implicit_flush(true);// 把缓存输出到浏览器
原文地址:https://www.cnblogs.com/webu/p/2754022.html