私が開発したソフトウェアでは、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共有ホスティングを使用しています。