PHP-FPM - 限制执行时间,优雅停止

时间:2017-06-02 05:43:02

标签: php execution

所以我在我的应用程序中有一些第三方调用webservices。

这些服务可以在高峰时段响应大量时间,以便达到我在PHP-FPM设置上为request_terminate_timeout定义的值。然后脚本被粗暴地中止,我无法使用register_shutdown_function来尝试清理请求。

是否有任何PHP / PHP-FPM设置我不知道这可能会限制请求的执行时间? A"优雅"处理PHP-FPM终止的方法?

  • max_execution_time只考虑在PHP中花费的时间,在我的情况下,这不是长时间运行脚本的原因
  • 使用pcntl来电,对于网络请求,似乎不是一个好主意。

2 个答案:

答案 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