php ob_flush,flush ieで無効なバッファリングの解決方法

1458 ワード

PHPがどのような場合に実行されるかにかかわらず、PHPプログラムのバッファリング(CGI、webサーバなど).この関数は、現在までのプログラムのすべての出力をユーザーのブラウザに送信します.
flush()関数は、サーバまたはクライアントブラウザのキャッシュモードに影響を与えません.したがって、ob_を同時に使用する必要があるflush()関数とflush()関数を使用して、出力バッファをリフレッシュします.
個々のウェブサーバプログラム、特にWin 32下のウェブサーバプログラムは、結果がブラウザに送信されるまでスクリプトの出力がキャッシュされ、プログラムが終了するまで
自分で小さな例を書いて、ページに1秒おきに数字を出力したいと思っています.
ネット上のコードに従って:
 
  
ob_end_clean();
for ($i=10; $i>0; $i--)
{
echo $i;
flush();
sleep(1);
}

または、
 
  
for ($i=10; $i>0; $i--)
{
echo $i;
ob_flush();
flush();
sleep(1);
}

私は火狐の中で有効であることを発見したが、IEでは役に立たず、毎回10個の数字が一緒に出力され、これはバッファが有効ではないことを示している.
私はまたphpを調整し始めました.iniの中のoutput_bufferingの設定は、apacheを再起動しても無効です.
そして私は一つの言葉を見ました.
一部のバージョンのMicrosoft Internet Explorerでは、受信した256バイト以降にのみページが表示されるため、追加のスペースを送信してページの内容を表示する必要があります.
罪のIEブラウザー、問題はTMDの多いことです!
プログラムを変更して正常になりました
 
  
echo str_pad('',4096);
for ($i = 0; $i < 10; $i++) {
echo $i;
ob_flush();
flush();
sleep(1);
}
 
  
//ob_end_flush();//IE8
echo str_pad(" ", 256);//IE 256

for($i=0;$i<18;$i++) {
echo $i;
flush();
sleep(1);
}