处理由PHP-FPM和PHP文件设置的执行时间



我已经在PHP-FPM池配置文件中设置了request_terminate_timeout指令,该文件当前为100s,我正在为单个PHP文件设置set_time_limit(600)。但问题是最低的触发器首先触发,所以600s永远不会应用,这是我没有预料到的。

是否可以全局保留request_terminate_timeout,同时在单个PHP文件中设置更高的最大执行时间值?

我以前也遇到过类似的问题。我不完全确定它是否适合你的问题,但我试着把所有的东西都记录下来,只是为了确保给出"安全"的提示。

我想你的问题的残酷答案是否定的,因为你在php-fpm.conf中指定的指令大多不能从ini_set()更改,而set_time_limit几乎只不过是ini_set()上的一个方便包装器。

set_time_limit应该只"覆盖"max_execution_time指令,因为

它们只影响脚本本身的执行时间

(官方文档中有一个特定的注释(。

另一方面,request_terminate_timeout与FPM有关,所以我们在这里谈论的是流程管理级别:

当'max_execution_time'ini选项未停止时,应使用

出于某种原因执行脚本。

所以,为了尝试回答这个问题,我认为问题是您试图将FPM(request_terminate_timeout(处理的东西和PHP本身(max_execution_time(处理的事情混合在一起。

使用max_execution_time代替request_terminate_timeout(但将其用于实际的最大上限(应该可以解决问题。

官方文档中的max_execution_time描述暗示了这个常见问题,即:

您的web服务器可以具有其他超时配置,这些配置也可能中断PHP执行。Apache有Timeout指令,IIS有CGI超时功能。两者都默认为300秒。查看您的web服务器有关具体细节的文档。

注意:此等式中的一些变量甚至可能与Web服务器相关(例如:读取超时(

PHPmax_execution_time应该低于njinxrequest_terminate_timeout,因为PHP会触发异常,当request_terminate_timeout在不给你任何反馈的情况下惹恼网站用户时,你可以抓住它并采取措施。

这就是为什么答案是";否";

在我的"php-fpm.conf"中;request_terminate_timeout";找不到。默认值:0。值"0"表示"关闭"。

最新更新