我正在运行一个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无济于事。我错过了什么设置或配置,或者我可以检查?
答案 0 :(得分:0)
当你使用php-fpm运行nginx时,nginx会尝试与php-fpm的孩子保持联系。您应该设置以下指令来更改它:
fastcgi_keep_conn off;