前一段,查看php-fpm.conf 定义的slow log,发现有很多的执行超时,记录格式如下:
[26-Apr-2016 18:02:16] WARNING: [pool www] child 7883, script ‘/***/index.php’ (request: “GET /index.php”) executing too slow (56.565008 sec), logging
从日志记录的结果看,此请求执行了56秒多。但是查看php.in 定义却发现max_execution_time = 5,顿感好奇,最大执行5秒为何为执行了近一分钟呢?这个max_execution_time 难道定义的不是请求执行时间吗?遂去google了一下。
此2篇文章都不约而同的说到了:
在 php-cgi(php-fpm) 中,max_execution_time 参数不会起效。真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的参数:request_terminate_timeout。
可是经过我的数次测试,发现在 上面的那段话确是”部分正确”的。
测试环境:
centos 7.0
nginx 1.63
php 7.05
php.ini 依然定义max_execution_time = 5
经过对比测试:max_execution_time,request_terminate_timeout 参数控制着不同的超时场景.
1.request_terminate_timeout确实可以控制php的执行时间:
如果执行的php时间大于request_terminate_timeout时间,php-fpm 会结束执行,然后浏览器会收到响应 http:404;<