PHP の出力を 1 行ずつフラッシュします (ob_flush とフラッシュの組み合わせ)

WBOY
リリース: 2016-07-29 08:47:55
オリジナル
956 人が閲覧しました

マニュアルの ob_flush/flush の説明では、どちらも出力バッファをリフレッシュするものであり、組み合わせて使用​​する必要があるため、多くの人に混乱を引き起こす可能性があります...
実際には、これらは異なるオブジェクトに対して動作します。
ob_* 一連の関数は PHP 自体の出力バッファーを操作します
厳密に言えば、これは PHP が Apache として使用されている場合にのみ使用できます。モジュール (ハンドラーまたはフィルター) インストールされている場合にのみ実際の効果があり、WebServer のバッファー (特に Apache を参照すると考えられます) を更新します。
Apache モジュールの sapi の下で、flush は呼び出しによって間接的に Apache の API を呼び出します。 sapi_module のフラッシュ メンバー関数ポインタ: ap_rflush は、Apache の出力バッファを更新します。 もちろん、マニュアルには、このアクションの結果を変更する可能性のある Apache の他のモジュールもあるとも記載されています。
mod_gzip などの一部の Apache モジュールは、出力キャッシュを独自に実行するため、フラッシュが発生します。 () 関数によって生成された結果は、クライアントのブラウザーにすぐには送信されません。
ブラウザでも、受信したコンテンツを表示する前にキャッシュします。たとえば、Netscape ブラウザは改行または HTML タグの先頭を受け取るまでコンテンツをキャッシュし、 タグを受け取るまでテーブル全体を表示しません。
Microsoft Internet Explorer の一部のバージョンは、256 バイトを受信した後にのみページの表示を開始するため、これらのブラウザーがページのコンテンツを表示できるようにするには、追加のスペースを送信する必要があります。
したがって、この 2 つを使用する正しい順序は、最初に ob_flush、次にフラッシュです。もちろん、他の sapi では、flush を呼び出すことはできませんが、コードの移植性を確保するために、これらを一緒に使用することをお勧めします。 IE では、次のコードが機能する前に 256 バイトが最初に出力される必要があります。



コードをコピー

コードは次のとおりです。 function execte(){

echo str_pad(" ", 256);

for ($i =1;$iecho $i."
";
sleep(1);

上記は、フラッシュ PHP (ob_flush とフラッシュの組み合わせ) の 1 行ごとの出力を、フラッシュの内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!