ホームページ > バックエンド開発 > PHPチュートリアル > php ob_flush、IE_PHPチュートリアルのバッファ無効なフラッシュ解決策

php ob_flush、IE_PHPチュートリアルのバッファ無効なフラッシュ解決策

WBOY
リリース: 2016-07-21 15:37:58
オリジナル
949 人が閲覧しました

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
tru​​e

http://www.bkjia.com/PHPjc/321813.html

技術記事

PHP が実行されるコンテキスト (CGI、Web サーバーなど) に関係なく、PHP プログラムをバッファリングします。この関数は、これまでのプログラムの出力をすべてユーザーのブラウザに送信します。 flash() 関数は次のことを行いません...



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート