我从nginx的,当我的PHP脚本运行时间比平时长得到504超时消息。 set_time_limit(0)
似乎并没有阻止! 它是否在运行nginx的PHP5-FPM时无法正常工作? 如果是这样,什么设置时间限制的正确方法?
错误:
504 Gateway Time-out
nginx/1.2.7
我从nginx的,当我的PHP脚本运行时间比平时长得到504超时消息。 set_time_limit(0)
似乎并没有阻止! 它是否在运行nginx的PHP5-FPM时无法正常工作? 如果是这样,什么设置时间限制的正确方法?
错误:
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
如果错误仍然存在,考虑增加值。
您不能使用PHP,以防止nginx的发出超时。
要配置nginx的,以允许更多的时间看proxy_read_timeout
指令 。
正确答案是在Nginx的配置增加fastcgi_read_timeout。
就那么简单!
sudo nano /etc/nginx/nginx.conf
添加这些变量nginx.conf文件:
http {
# .....
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
然后重新启动:
service nginx reload
您需要添加额外的nginx的指令(用于ngx_http_proxy_module
中) nginx.conf
,如:
proxy_read_timeout 300;
基本上nginx的proxy_read_timeout
指令改变代理超时,该FcgidIOTimeout
是该安静太长脚本和FcgidBusyTimeout
对于那些需要很长时间才能执行脚本。
此外,如果你正在使用FastCGI应用程序,增加这些选项,以及:
FcgidBusyTimeout 300
FcgidIOTimeout 250
然后重新加载nginx的和PHP5-FPM。
在Plesk中,您可以在其他nginx的指令在Web服务器设置添加它。
对于下HTTP的其他指令在Web服务器设置的FastCGI检查。
请参阅: 如何解决在Plesk中FastCGI的超时问题?
由于您使用的PHP-FPM你应该利用fastcgi_finish_request()为您知道可能需要较长时间处理请求。
使用set_time_limit(0)
使用PHP-fpm的或类似的进程管理器时是无用的。
底线是不使用set_time_limit
当使用php-fpm
,以提高您的执行超时,请检查本教程 。
有三种可能发生在这种情况下超时。 可以看出,每个答案只集中在一个这样的可能性方面。 所以,我认为把它写下来,有人来这里玩在未来不需要抽查每个答案并获得成功,不知道这工作。
因此,对于每个问题修补程序如下。
$.ajax({ url: "test.html", error: function(){ // will fire when timeout is reached }, success: function(){ //do something }, timeout: 3000 // sets timeout to 3 seconds });
nginx的客户端超时
http{ #in seconds fastcgi_read_timeout 600; client_header_timeout 600; client_body_timeout 600; }
nginx的代理的服务器超时
http{ #Time to wait for the replying server proxy_read_timeout 600s; }
因此,使用一个你需要的。 也许在某些情况下,你需要所有这些配置。 我需要。
我解决这个烦恼与配置APACHE! 所有的方法(本主题)是不正确的我...然后我尝试chanche Apache的配置:
Timeout 3600
然后我的脚本工作!