【发布时间】:2018-03-16 16:36:40
【问题描述】:
我知道这个话题已经被讨论过很多次了,但是关于 SO 的解决方案似乎都不适用于 PHP 7.x(例如,close a connection early 中的任何东西都不起作用。对于类似的所有类似答案也是如此问题)。
我想提前关闭一个 php 脚本的连接,这样浏览器就不会因为长时间运行的任务而停止。我有一个 PHP 5.x 服务器设置,多年来一直运行良好。但我很难让它在 PHP 7.x 设置上工作。
我不能使用 fastcgi_finish_request(),因为我没有使用 FastCGI 运行 PHP。此外,任何面向命令行的解决方案(exec 等)都不是一种选择。此外,线程不是一个选项,因为 pthread 没有安装在服务器上。
经过长时间的测试,我发现对于 PHP 5.x,要在继续执行脚本的同时正确关闭连接,需要不同的“配方”,具体取决于服务器配置。对于某些服务器来说,这可以解决问题
header("Content-Length: 0");
ob_end_clean();
ob_end_flush();
echo(' ');
其他配置只需要这样做即可:
header("Content-Encoding: none");
header("Content-Length: 0");
flush();
但是,对于 PHP 7.x,我没能想出正确的“秘诀”。
有谁有更多的运气或可以提出不同的解决方案吗?
【问题讨论】:
标签: php background php-7