ignore_user_abort(true);
首先,我们先来了解下ignore_user_abort(true);这个函数
这个函数可以忽略客户机的断开,继续执行php代码
那到底这个用来干啥的呢?...例如:
//当用户A用浏览器请求下单逻辑
//由于后台逻辑非常多,需要处理20秒
//用户A等了10秒等不下去,关闭了网页
//默认情况下,用户关闭了网页,php进程则会直接终止,相当于执行了一半逻辑之后...我们就要开始实现这个功能了
伪结束响应原理是:
先让php提前输出"已结束响应"代码(其实还没有结束,还可以继续echo输出)
然后让用户自行关闭窗口,通过set_time_limit和ignore_user_abort...在php-fpm中,有个函数fastcgi_finish_request可使得web服务器提前中断http响应:
<?...php
//php-fpm模式下
set_time_limit(0);
ignore_user_abort(true);
//巴拉巴拉这里处理了一些事情
echo "完成请求,3秒自动关闭页面(一段js