我知道这个主题已被多次讨论,但SO上的解决方案似乎都不适用于PHP 7.x(例如,close a connection early中的everthing将无法正常工作。所有类似答案都是如此。关于类似的问题)。
我想尽早关闭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,我未能提出正确的"配方"。
那里有更多运气还是能提出不同解决方案的人?
答案 0 :(得分:-2)
您可以尝试register_shutdown_function()。只需在关闭用户连接时调用此函数,即代码的最后一个语句。
<?php
function shutdown()
{
// This is our shutdown function, in
// here we can do any last operations
// before the script is complete.
echo 'Script executed with success', PHP_EOL;
}
register_shutdown_function('shutdown');
?>