ブラウザ(IE7)のタイムアウトを防ぐ方法。
ブラウザ上のリンクをクリックすることで大容量データ処理を開始する、という
プログラムを組んでいるのですが。
あまりにデータ量が多すぎて、ブラウザのタイムアウト(画面が真っ白)が起こること、しばしば…
これを防ぐには以下のような方法があります。
- set_time_limit関数を使って、実行時間を延ばす。
- ob_end_clean関数を使って、出力をバッファリングしないようにする。
- str_pad関数を使ってパケットを送る(IE用)。
- flush関数を使って、出力をフラッシュする。
1については既に試していたのですが、
set_time_limit(0);
…とすると、待ち時間が無制限になります(・∀・)
さて、2〜4を順次見ていくと…。
3について。
echo str_pad('', 256);
IEでは256バイトを超えると出力が表示されるようになるので、わざと
256バイト分の空文字を出力するようにする、というもの。
for(){
for(){
// 重い処理…
}
// ブラウザのタイムアウト対策
ob_end_clean();
echo str_pad('',256);
flush();
}