如何在php5-fpm + ngnix配置中使用PHP处理超时?
我尝试用
创建一个简单的脚本sleep(60);
的php.ini
max_execution_time = 30
fast_cgi
fastcgi_connect_timeout 60;
fastcgi_send_timeout 50;
fastcgi_read_timeout 50;
脚本在50秒停止以便后端超时。我该怎么做
在php.ini中启用max_execution_time
启用ini_set将执行时间直接更改为0 脚本
为什么fast_cgi会控制超时而不是php本身的超时?
答案 0 :(得分:3)
基本上事实是,在Linux上,超时只计算实际的“php工作”而不是所有流功能时间,而且不是sleep
这就是为什么我从未达到限制并且fastgci超时总是被踢而在Windows上,实际的“人”时间已经过去了。
来自PHP doc:
set_time_limit()函数和配置指令 max_execution_time仅影响脚本的执行时间 本身。花在执行之外的活动上的任何时间 使用system(),流操作等系统调用的脚本 确定最大值时不包括数据库查询等 脚本运行的时间。在Windows上不是这样 测量时间是真实的。
答案 1 :(得分:0)
尝试在PHP代码中使用set_time_limit。
答案 2 :(得分:0)
使用php-cgi(php-fpm)
时,php.ini的max_execution_time
不会生效,但是
fpm配置项request_terminate_timeout
将处理脚本执行时间。
在php-fpm.conf中设置如下项目:
request_terminate_timeout = 60s