PHP が実行されるコンテキスト (CGI、Web サーバーなど) に関係なく、PHP プログラムをバッファリングします。この関数は、これまでのプログラムの出力をすべてユーザーのブラウザに送信します。
flush() 関数は、サーバーまたはクライアントのブラウザーのキャッシュ モードには影響しません。したがって、出力バッファをフラッシュするには、ob_flush() 関数と flash() 関数の両方を使用する必要があります。
個々の Web サーバー プログラム、特に Win32 での Web サーバー プログラムは、プログラムが終了するまで、結果をブラウザーに送信する前にスクリプトの出力をキャッシュします。
小さなサンプルを作成し、ページを毎秒出力したいと考えました。数。
インターネット上のコードに従ってください:
コードをコピーします コードは次のとおりです:
ob_end_clean();
for ($i=10; $i>0; $i--)
{
echo $i;
sleep(1);
または:
コードは次のとおりです: for ($i=10; $ i>0; $i--) {
echo $i;
flush();
}
、毎回10です 数字が一緒に出力されるため、バッファリングが効果的ではありません。
php.iniのoutput_buffering設定を再度調整し始め、Apacheを再起動しましたが、それでも機能しませんでした。
その後、次の段落を目にしました:
Microsoft Internet Explorer の一部のバージョンでは、256 バイトを受信した後にのみページの表示が開始されるため、これらのブラウザーにページのコンテンツを表示させるには、追加のスペースを送信する必要があります。
邪悪な IE ブラウザには多くの問題があります!
その後、プログラムを修正したところ、正常に動作しました:
コードをコピーします
コードは次のとおりです:
echo str_pad('',4096) for ($i = 0; $i < ; 10; $i++) { ob_flush();
コードは次のとおりです。
/ /ob_end_flush();/ /IE8 では動作しません
echo str_pad(" ", 256);//IE は表示を開始する前に 256 バイトを受信する必要があります
for($i=0;$iエコー $i;
スリープ(1);
http://www.bkjia.com/PHPjc/321813.htmlwww.bkjia.com
true
http://www.bkjia.com/PHPjc/321813.html
技術記事
PHP が実行されるコンテキスト (CGI、Web サーバーなど) に関係なく、PHP プログラムをバッファリングします。この関数は、これまでのプログラムの出力をすべてユーザーのブラウザに送信します。 flash() 関数は次のことを行いません...