【发布时间】:2017-08-11 22:42:17
【问题描述】:
经过数小时的搜索和调试,我放弃了!
关于长期运行的 PHP 进程有成千上万的问题和文章,但没有一个能解决我的问题。
我有一个包含以下代码的 PHP 脚本:
$cur = 0;
// Second, loop for $timeout seconds checking if process is running
while( $cur < 31 ) {
sleep(1);
$cur += 1;
echo "\n ---- $cur ------ \n";
}
它只是打算运行 31 秒。
我有一个 Nginx,PHP 在 debian 服务器中配置为 fastcgi。
我设置 max_execution_time = 600
在
/etc/php5/fpm/php.ini
我什至把它设置在
/etc/php5/cli/php.ini
也设置
request_terminate_timeout = 600
在 /etc/php5/fpm/pool.d/www.conf
我也在 nginx.conf http 部分进行了这些更改
client_header_timeout 600;
client_body_timeout 600;
send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
client_max_body_size 600;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
并将指令放在服务器部分。以及 nginx 配置的 location 部分中的这些指令
send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
client_max_body_size 600;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
但是我还是在浏览器中遇到网关超时错误! (是的!我重启了 php-fpm 和 nginx 数千次)
你们有什么想法吗?
【问题讨论】:
-
我认为来自 nginx error_log 的代表行(如果可用)会有所帮助。
-
总有一天,没有一条错误行会让你难过!
-
哎呀,太苛刻了。有我的同情。或许debug log可以启发你?坦率地说,你的配置看起来还不错。
-
哦,谢谢你这么好。调试是个好主意。我不知道调试选项。但不幸的是,它没有打印任何有用的信息。唯一类似于错误的行是 readv() 未准备好(11:资源暂时不可用),我认为这是非阻塞 IO 的正常现象
-
因为我没有想法:您能否向我们展示一下配置中 nginx 将请求传递给 php-fpm 的部分?包含
fastcgi_pass的节?
标签: php nginx fastcgi http-status-code-504