所以我在我的应用程序中有一些第三方调用webservices。
这些服务可以在高峰时段响应大量时间,以便达到我在PHP-FPM设置上为request_terminate_timeout
定义的值。然后脚本被粗暴地中止,我无法使用register_shutdown_function
来尝试清理请求。
是否有任何PHP / PHP-FPM设置我不知道这可能会限制请求的总执行时间? A"优雅"处理PHP-FPM终止的方法?
max_execution_time
只考虑在PHP中花费的时间,在我的情况下,这不是长时间运行脚本的原因pcntl
来电,对于网络请求,似乎不是一个好主意。答案 0 :(得分:0)
对于长轮询请求,我建议使用cron / stack方法。
问题,为什么它被停止可以发送到你的Apache / nginx服务器:
proxy_connect_timeout 500;
proxy_send_timeout 500;
proxy_read_timeout 500;
此外,您可以使用其触发器来处理超时错误。
答案 1 :(得分:0)
尝试设置max_execution_time并捕获错误
<?php
function shutdown()
{
$a=error_get_last();
if($a==null) {
echo "No errors";
} else {
gracefully_shutdown();
}
}
register_shutdown_function('shutdown');
ini_set('max_execution_time', 10 ); //set to 10 seconds
// do some works here
do_some_works();
?>
查看此链接http://www.php.net/manual/en/function.set-error-handler.php#106061