web-dev-qa-db-ja.com

NginxでFastCGI読み取りタイムアウトを無効にしますか?

FastCGIの読み取りタイムアウトを無効にする方法はありますか? (fastcgi_read_timeout)

ゼロに設定しても機能せず、ただちにタイムアウトします。

  • Nginx 1.0.5
  • PHP-FPM 5.3.6-13ubuntu3.6

タイムアウトを回避する必要があるのは、使用するシステムによってレポートが生成される方法が原因です。 PHP-FPMではフォークができないため(pctnl_fork()が無効)、リクエストが送信されるとすぐにレポート処理が行われます。これにより、システムによって処理が完了するまで読み取りがハングします。

5
Kevin Herrera

設定するのが唯一のオプションのようです fastcgi_read_timeout 非常に大きな値(1hや1dなど)に。

5
mgorven

問題を解決する方法:

  1. ユーザーがレポートを生成する要求を送信したら、exec("php report.php")を使用してCLIモードでレポート生成スクリプトを実行します。もちろん、いくつかの識別可能な情報を引数として使用します。

  2. AJAXを使用して、ユーザーの「お待ちください」ページをロードし、レポートが ps w 。使用されているスクリプト名と引数を探します。

  3. 完了したら、レポートページにリダイレクトします。

このようにして、待機時間が長くなりすぎた場合にユーザーが更新をマッシュアップするのを防ぎ(実質的にはさらに長くする)、同時にプロセスがまだ実行中であることをユーザーに通知します。

0
Sašo