0

私が開発したソフトウェアでは、PHP が行をデータベースに挿入するために使用する XLS ファイルをユーザーが送信できます。通常、1 つのファイルには 1500 行あり、データベースでは 7000 行になります。このプロセスは通常、完了するまでに 5 ~ 7 分かかります。

しばらくすると、504 Gateway Time-out エラーが発生します。調査を行ったところ、解決策は最大実行時間を増やすことであることがわかりました。私はそれを試しましたが、何もしませんでした。構成が無視されているようです。

max_execution_time = 600
max_input_time = 600

ignore_user_abort次に、関数とを使用して、これを PHP で直接設定しようとしましたset_time_limit。繰り返しますが、うまくいきませんでした。

set_time_limit(0);         //never time out
ignore_user_abort(true);   //ignore abort

この後、あきらめて、エラーが発生した理由を説明するカスタム エラー ページを作成し、コントロール パネルにリダイレクトすることにしました。そこで、次のコンテンツを持つ .htaccess に移動しました。

# Turn on the RewriteEngine
RewriteEngine On
Options +FollowSymLinks +Includes
Options -Indexes
IndexIgnore */*
# Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|robots\.txt)

RewriteRule . index.php?/$0 [L]

そして、次のステートメントを追加しました。

ErrorDocument 504 http://domain/erros/timeout/

エラーが再度発生すると、URL にリダイレクトする代わりに、デフォルトのエラー ページが表示されます。

アップデート

私はdreamhost共有ホスティングを使用しています。

4

1 に答える 1

0

ドキュメントによると、問題はないはずですhttp://wiki.dreamhost.com/Creating_custom_error_pages

次のようなローカルパスを使用する必要があると思います

ErrorDocument 504 /cgi-bin/error.php?code=504
于 2014-01-15T16:13:22.110 に答える