当前位置:首页 > Web开发 > 正文

转载请附上原文出处链接及本声明

2024-07-17 Web开发

php-fpm超不时间设置request_terminate_timeout分析
原创loophome 最后颁布于2017-11-22 16:17:59 阅读数 21201 保藏
展开
今天发明了一个很神奇的工作,php日志中有一条超时的日志,但是我request_terminate_timeout中设置的是0,理论上应该没有超不时间才对。

PHP Fatal error:  Maximum execution time of 30 seconds exceeded in ...

OK,先列呈此刻的配置:

php-fpm:
request_terminate_timeout = 0
php.ini:
max_execution_time = 30

先查阅了一下php-fpm文件中关于request_terminate_timeout的注释

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the ‘max_execution_time‘ ini option
; does not stop script execution for some reason. A value of ‘0‘ means ‘off‘.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0


这个注释说明了,request_terminate_timeout 适用于,当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干失。
再看看max_execution_time的注释:这设置了脚本被解析器中止之前允许的最大执行时间,默认是30s。看样子,我这个请求应该是被max_execution_time这个设置干失了。

好吧,不死心,做了一个尝试:

php-fpm request_terminate_timeout 设置 0 15
php.ini max_execution_time 设置 30 30
执行功效 php有Fatal error超时日志,http状态码为500 php无Fatal error超时日志,http状态码为502,php-fpm日志中有杀失子进程日志

好吧,结论是web请求php执行时间受到2方面控制,一个是php.ini的max_execution_time(要注意的是sleep,http请求期待响应的时间是不算的,这里算的是真正的执行时间),另一个是php-fpm request_terminate_timeout 设置,qq空间无权限访问破解 ,这个算的是请求开始n秒。
————————————————
版权声明:本文为CSDN博主「loophome」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文来由链接及本声明。
原文链接:https://blog.csdn.net/loophome/article/details/78604986

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/27368.html