脚本在240秒后超时

时间:2013-05-04 00:02:31

标签: php nginx

我正在运行一个Nginx + PHP-FPM服务器,我有一个应该在30分钟内执行的脚本。 240秒后它停止运行并从Nginx返回502网关错误。

PHP-FPM执行日志:

  

[03-May-2013 19:52:02]警告:[pool www] child 2949,脚本   '/var/www/shell/import_db.php'(请求:“GET /shell/import_db.php”)   执行超时(239.971196秒),终止
  [03-May-2013 19:52:02]警告:[pool www] child 2949在开始后540.054237秒后退出信号15(SIGTERM)   [03-May-2013 19:52:02]通知:   [池www]孩子3049开始了

执行Nginx日志:

  

2013/05/03 19:52:02 [错误] 2970#0:* 1 recv()失败(104:连接   从上游读取响应头时,客户端:   98.172.80.203,服务器:www.example.net,请求:“GET /shell/import_db.php HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,   主持人:“www.example.net”

我在apache + suphp服务器上运行这个脚本,它执行得很完美。非正常,我包括: 我的脚本顶部有set_time_limit(0);

根据phpinfo()的max_execution_time是1800秒(这最初是300,我试图让它工作时将其提升到这一点)。

FastCGI Nginx配置:

## Fcgi Settings
include                        fastcgi_params;
fastcgi_connect_timeout        60;
fastcgi_send_timeout           180s;
fastcgi_read_timeout           600s;
fastcgi_buffer_size            4k;
fastcgi_buffers 512            4k;
fastcgi_busy_buffers_size      8k;
fastcgi_temp_file_write_size   256k;
fastcgi_intercept_errors       off;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME     $fastcgi_script_name;
# nginx will buffer objects to disk that are too large for the buffers above
fastcgi_temp_path              /tmpfs/nginx/tmp 1 2;
#fastcgi_keep_conn              on; # NGINX 1.1.14
expires                        off; ## Do not cache dynamic content

我已经重启php-fpm和nginx无济于事。我错过了什么设置或配置,或者我可以检查?

1 个答案:

答案 0 :(得分:0)

当你使用php-fpm运行nginx时,nginx会尝试与php-fpm的孩子保持联系。您应该设置以下指令来更改它:

fastcgi_keep_conn off;