読者です 読者をやめる 読者になる 読者になる

初めてのシステムと日記

システムも日記も初めてです。

タイムアウト回避策

PHP

PHPでは標準で以下のような場合、処理を中断します。

  • ブラウザとの接続が切れた場合(ブラウザの「中止」ボタンが押された場合や閉じられた場合)
  • ブラウザからのリクエストがあってから、30秒以上経過


しかし、CSVファイルの吐き出しなどで

処理を中断させたくない場合があります。

そういう時は、php.iniやphpの関数の設定でタイムアウトを回避することが出来ます。


php.ini

//クライアント切断時に処理を実行するように指定
ignore_user_abort = On

//スクリプトを強制終了させるまでの許容する最大時間(単位:秒)
max_execution_time = 86400


php

//クライアント切断時に処理を実行するように指定
ignore_user_abort(true);

//スクリプトを強制終了させるまでの許容する最大時間(単位:秒)
set_time_limit(86400);


max_execution_time、set_time_limitを0にすると

時間制限を受けないということになります。

ただこれだと、サーバーに負荷がかかったり

無限ループに陥っても止まらないなど発生するので、

きちんと秒数を指定した方がよさそうです。