Nginx + PHP-FPM サーバーを実行しており、30 分以上実行するスクリプトがあります。240 秒後に機能しなくなり、Nginx から 502 ゲートウェイ エラーが返されます。
実行の PHP-FPM ログ:
[2013 年 5 月 3 日 19:52:02] 警告: [プール www] 子 2949、スクリプト '/var/www/shell/import_db.php' (要求: "GET /shell/import_db.php") の実行がタイムアウトしました(239.971196 秒)、終了
[2013 年 5 月 3 日 19:52:02] 警告: [プール www] 開始から 540.054237 秒後にシグナル 15 (SIGTERM) で子 2949 が終了しました
[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. net、リクエスト: "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 を再起動しましたが、役に立ちませんでした。これに欠けている、または確認できる設定または構成は何ですか?