我正在运行 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 秒),终止
[2013 年 5 月 3 日 19:52:02] 警告:[池 www] 子 2949 在开始后 540.054237 秒后退出信号 15(SIGTERM)
[2013 年 5 月 3 日 19:52:02]通知:[池 www] 孩子 3049 开始
执行的 Nginx 日志:
2013/05/03 19:52:02 [错误] 2970#0: *1 recv() 在从上游读取响应标头时失败(104:对等方重置连接),客户端:98.172.80.203,服务器:www.example。网络,请求:“GET /shell/import_db.php HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“www.example.net”
我已经在 apache+suphp 服务器上运行了这个脚本,它完美地执行。尽管如此,我包括:
set_time_limit(0);
在我的脚本的顶部。
根据 max_execution_timephpinfo()
是 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 无济于事。我缺少什么设置或配置,或者我可以检查什么?