使用PHP防止nginx 504网关超时set_time_limit()
当我的PHP脚本运行时间比平时长时,我得到了来自nginx的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秒的请求超时。
尝试这个链接 ,它有一个更好的解决scheme,如何解决这个问题。 所以步骤是:
-  打开位于/etc/nginx目录下的nginx.conf文件。
- 
在 http {下面添加下面这段代码http {section: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发出的超时。
 要configurationnginx以允许更多时间,请参阅proxy_read_timeout指令 。 
 正确的答案是增加Nginxconfiguration中的fastcgi_read_timeout 。 
 就那么简单! 
既然你使用的是php-fpm,你应该利用fastcgi_finish_request()来处理你所需要的更长的请求。
 在使用php-fpm或类似的进程pipe理器时,使用set_time_limit(0)是无用的。 
 底线是在使用php-fpm时不要使用set_time_limit ,为了增加执行的超时时间,请查看本教程 。 
 您需要在nginx.conf添加额外的nginx指令(用于ngx_http_proxy_module ),例如: 
 proxy_read_timeout 300; 
 基本上,nginx的proxy_read_timeout指令改变了代理超时, FcgidIOTimeout适用于安静时间过长的脚本,而FcgidBusyTimeout适用于执行时间过长的脚本。 
另外,如果您正在使用FastCGI应用程序,请增加以下选项:
 FcgidBusyTimeout 300 FcgidIOTimeout 250 
然后重新加载nginx和PHP5-FPM。
的Plesk
在Plesk中,您可以将其添加到其他nginx指令下的Web服务器设置中 。
对于FastCGI,请在“ HTTP附加指令 ”下的“ Web服务器设置”中进行检查。
请参阅: 如何解决Plesk中的FastCGI超时问题?
我用config APACHE解决了这个问题! 所有的方法(在这个主题)是不正确的我…然后我尝试chanche的Apacheconfiguration:
 Timeout 3600 
然后我的脚本工作!