PHPでWEBアプリを開発しているとある壁にぶち当たりました。
それはWEBブラウザのタイムアウト制限です。
データベースと連携している性質上データの件数が肥大するに伴い処理時間が
超過していきます。
データベース構築時点での設計ミスもありますが、やはり限界があるのではないでしょうか?
最初は、php.iniやApacheの設定をいじっていましたが頭打ちをするところまできました。
いろいろと調べてみると、WEBサーバからのデータが一定時間ないとWEBブラウザは接続が切断されたものとして判断してしまうようです。
だったら、細かく途中経過のデータを送ってあげればいいのでは?
と単純な考えでソースの埋め込み開始。
//出力バッファOFF
ob_end_clean();
// IEはこれがいるらしいので
echo str_pad(”,256);
flush();
// あとは要所要所に途中経過コメントを出力
echo “コメント”;
flush();
これで、数時間にわたる処理がとりあえず実行できるようになりました。
数時間に渡る処理自体が問題との声がありそうですが・・・・。