使用 PHP set_time_limit() 防止 nginx 504 网关超时
当我的PHP脚本运行时间比平时更长时,我从nginx收到504超时消息。 似乎无法阻止这一点!在nginx上运行php5-fpm时它不起作用吗?如果是这样,设置时间限制的正确方法是什么?set_time_limit(0)
错误:
504 Gateway Time-out
nginx/1.2.7
当我的PHP脚本运行时间比平时更长时,我从nginx收到504超时消息。 似乎无法阻止这一点!在nginx上运行php5-fpm时它不起作用吗?如果是这样,设置时间限制的正确方法是什么?set_time_limit(0)
错误:
504 Gateway Time-out
nginx/1.2.7
有几种方法可以设置 php-fpm 的超时。在我添加了这行:/etc/php5/fpm/pool.d/www.conf
request_terminate_timeout = 180
另外,在我将以下行添加到相关服务器的位置块中:/etc/nginx/sites-available/default
fastcgi_read_timeout 180;
整个位置块如下所示:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 180;
include fastcgi_params;
}
现在只需重新启动php-fpm和nginx,对于少于180秒的请求,应该不会有更多的超时。
试试这个链接,它有一个更好的解决方案如何解决这个问题。因此,步骤是:
nginx.conf
/etc/nginx
在部分下添加以下代码段:http {
client_header_timeout 3000;
client_body_timeout 3000;
fastcgi_read_timeout 3000;
client_max_body_size 32m;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
注意:如果已存在,请根据 更改值。
重新加载Nginx和php5-fpm。
$ service nginx reload
$ service php5-fpm reload
如果错误仍然存在,请考虑增加这些值。