我已经在当前为request_terminate_timeout
的PHP-FPM池配置文件中设置了100s
指令,并且为单个PHP文件设置了set_time_limit(600)
。但是问题在于最低触发优先,所以600s
永远不会适用,这是我所不希望的。
是否可以在全局保留request_terminate_timeout
的同时在各个PHP文件中为最大执行时间设置更高的值?
答案 0 :(得分:2)
我之前也遇到过类似的问题。 不能完全确定它是否适合您的问题,但我已尝试记录所有内容,以确保提供“安全”提示。
您的问题的残酷答案,我想这是不对的,因为您在php-fpm.conf
中指定的指令几乎无法从ini_set()
进行更改,并且set_time_limit
几乎无非是{ ini_set()
上的{3}}。
{1>应该只覆盖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服务器相关(例如:读取超时)。