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

时间:2018-10-29 07:49:58

标签: php fpm

我已经在当前为request_terminate_timeout的PHP-FPM池配置文件中设置了100s指令,并且为单个PHP文件设置了set_time_limit(600)。但是问题在于最低触发优先,所以600s永远不会适用,这是我所不希望的。

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

1 个答案:

答案 0 :(得分:2)

我之前也遇到过类似的问题。 不能完全确定它是否适合您的问题,但我已尝试记录所有内容,以确保提供“安全”提示。

您的问题的残酷答案,我想这是不对的,因为您在php-fpm.conf中指定的指令几乎无法从ini_set()进行更改,并且set_time_limit几乎无非是{ ini_set()上的{3}}。

{应该只覆盖set_time_limit指令,因为

  

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

convenience wrapper中有一个特殊说明)。

另一方面,max_execution_time与FPM相关,因此我们在这里讨论流程管理级别:

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

  出于某些原因执行脚本。

因此,为了回答这个问题,我认为问题是您正在尝试混合使用FPM(request_terminate_timeout)和PHP本身(request_terminate_timeout)处理的东西。

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

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

  

您的Web服务器可以具有其他超时配置,这些配置也可能   中断PHP执行。 Apache有一个Timeout指令,而IIS有一个   CGI超时功能。两者默认为300秒。查看您的网络服务器   有关详细信息的文档。

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