ホームページ > バックエンド開発 > PHPチュートリアル > ob_flush と PHP のフラッシュの違いについて簡単に説明します。ob_flushflush_PHP チュートリアル

ob_flush と PHP のフラッシュの違いについて簡単に説明します。ob_flushflush_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:12:58
オリジナル
1178 人が閲覧しました

ob_flush と PHP のフラッシュ、ob_flushflush の違いについて簡単に説明しましょう

マニュアルの ob_flush/flush の説明は出力バッファをリフレッシュするものであり、併用する必要があるため、多くの人に混乱を引き起こす可能性があります...

実際には、異なるオブジェクトに対して動作する場合もあります。

場合によっては、フラッシュは何も行いません。

ob_* 系関数はPHP自体の出力バッファを操作します。

つまり、ob_flush は PHP 自身のバッファをフラッシュすることです。

そして厳密に言えば、これは PHP が Apache のモジュール (ハンドラーまたはフィルター) としてインストールされている場合にのみ実際に効果を持ちます。Web サーバー (特に Apache と考えられます) のバッファーをリフレッシュします。

Apache モジュールの sapi の下で、flush は sapi_module のフラッシュ メンバー関数ポインターを呼び出すことで間接的に Apache API を呼び出します。 ap_rflush は Apache の出力バッファーを更新します もちろん、マニュアルには Apache の他のモジュールもあると記載されています。このアクションの結果が変わる可能性があります..

mod_gzip などの一部の Apache モジュールは、独自の出力をキャッシュする場合があり、これにより、flush() 関数によって生成された結果がクライアントのブラウザーにすぐに送信されなくなります。 ブラウザでも、受信したコンテンツを表示する前にキャッシュします。たとえば、Netscape ブラウザは、改行または HTML タグの先頭を受け取るまでコンテンツをキャッシュし、 タグを受け取るまでテーブル全体を表示しません。

Microsoft Internet Explorer の一部のバージョンは、256 バイトを受信した後にのみページの表示を開始するため、これらのブラウザーがページのコンテンツを表示できるようにするには、追加のスペースを送信する必要があります。 したがって、この 2 つを使用する正しい順序は、まず ob_flush、次に flash です。もちろん、他の sapi では、flush を呼び出すことはできませんが、コードの移植性を確保するために、これらを一緒に使用することをお勧めします。

flush と ob_flush を使用する場合は、出力バッファーのリフレッシュを妨げる特別な考慮事項がいくつかあります。


1. flash と ob_flush の正しい順序は、次のように、最初に ob_flush、次に flash

です。 ob_flush(); フラッシュ(); WebサーバのOSがWindowsの場合は、順序が逆でも、ob_flush()を使用しなくても問題ありません。ただし、Linux システムでは、出力バッファをフラッシュできません。


2. ob_flush() を使用する前に、前のコンテンツのサイズが 4069 文字に十分であることを確認してください

一部の Web サーバーのデフォルトの Output_buffering は 4069 文字以上です。つまり、サーバーが出力バッファをフラッシュする前に、出力コンテンツが 4069 文字に達する必要があります。フラッシュを確実に効果的にするには、次のステートメントを使用するのが最適です。 ob_flush() 関数の前:
print str_repeat(" ", 4096);

確実にoutput_buffering値に達するようにします。



コードをコピーします

コードは次のとおりです: for ($i=1; $i<20; $i++)
{
echo "".$i."";
echo '
';
ob_flush();
フラッシュ();
睡眠(1);
}
ob_end_flush();
?>



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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/918860.html技術記事 php の ob_flush と flash の違いについて簡単に説明します。マニュアルの ob_flushflush と ob_flush/flush の説明では、両方とも出力バッファをリフレッシュするため、一緒に使用する必要があるため、多くの人が混乱しています...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート