2

我正在运行 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 无济于事。我缺少什么设置或配置,或者我可以检查什么?

4

1 回答 1

0

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

fastcgi_keep_conn 关闭;

于 2015-11-24T20:20:31.967 回答