使用 PHP set_time_limit() 防止 nginx 504 网关超时

2022-08-30 06:48:03

当我的PHP脚本运行时间比平时更长时,我从nginx收到504超时消息。 似乎无法阻止这一点!在nginx上运行php5-fpm时它不起作用吗?如果是这样,设置时间限制的正确方法是什么?set_time_limit(0)

错误:

504 Gateway Time-out
nginx/1.2.7

答案 1

有几种方法可以设置 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秒的请求,应该不会有更多的超时。


答案 2

试试这个链接,它有一个更好的解决方案如何解决这个问题。因此,步骤是:

  1. 打开位于目录中的文件。nginx.conf/etc/nginx
  2. 在部分下添加以下代码段: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;
    

    注意:如果已存在,请根据 更改值。

  3. 重新加载Nginx和php5-fpm。

    $ service nginx reload
    $ service php5-fpm reload
    

    如果错误仍然存在,请考虑增加这些值。


推荐