PHPで長時間実行されるバッチ処理で起こる問題。 PHPではサーバー負荷防止のための “max_execution_time” によるタイムアウトがあるが、これとは別にブラウザに画面出力がないまま時間が経過すると、408 Request Timeout が発生してしまう。 タイムアウトまでの時間は、Firefoxではdefaultで115秒、IEでは60秒となっている。 これを防ぐためには、画面に何か定期的に出力しておく必要がある。 バッチ処理の場合は、リアルタイムに処理件数等をカウントしていくプログレスバーを表示する方法がある。 実現方法としてはAjaxを用いる。具体的にはこちらを参考にした。 はじめに全体の処理件数を求める。 ループ処理の最後で処理件数をカウントアップしていき、「処理件数 / 全体件数 * 100」 でプログレスバーのゲージを進める。 これで3分を超える処理でも 408