PHP 出力キャッシュ (output_buffering) についての深い理解_PHP チュートリアル
最初に PHP の出力順序を明確にします
1.php 出力キャッシュがオンになります: echo,print -> ブラウザ バッファリング -> ブラウザ ディスプレイ
; PHP 出力キャッシュがオンになっていない: echo、print -> サーバー バッファリング -> ブラウザ バッファリング -> ブラウザの表示
ブラウザの出力キャッシュも明確にします: IE は 256 バイト、Chrome と FireFox は 1000 バイトです。これ ブラウザーは、長さまたはスクリプトが終了した場合にのみページにデータを出力します
使用されるいくつかの PHP 設定と API について説明します: 1.php.ini の output_buffering 設定
•Off: PHP 出力キャッシュをオフにすることを意味します•オン: 無限の出力キャッシュを開きます
•4096: サイズ 4096 バイトの出力キャッシュを開きます
2.php.ini の implicit_flush 設定
• オン: 各出力後の自動フラッシュを示します (エコーなど) , print) flash() 関数を呼び出した後、直接出力します •Off: On とは対照的に、各出力後に flash() は呼び出されません。サーバーのバッファリングがいっぱいになるまで出力されませんが、flush() を使用できます。 ) 関数をオンにしても問題ありません。より柔軟です
3.ob_flush() 関数: PHP バッファリングからデータを取り出し、サーバーのバッファリングに入れます
4.flush() 関数: サーバーのバッファリングからデータを取り出し、ブラウザのバッファリングに入れます
5.ob_start() 関数: この関数については、オンにすると出力が行われないため、今はあまり知りません。 ob_flush() と flash() を使用しても、output_buffering=Off の場合は、ob_start() を使用しても、データはすぐに出力されないことがわかります。 out_buffering=On の場合、ob_start() を使わなくても出力データは PHP でキャッシュできるので、とりあえず無視します
それでは、コード (output_buffering=4096、implicit_flush=Off に設定)
// ob_start(); // IE キャッシュ 256 バイト; ChromeおよびFF出力のキャッシュに1000バイトのキャッシュがあります
);
ここで出力されるコードは 1 行ずつ出力されます。具体的な原理については、ob_flush() と flash() の関数を参照してください。
これら 2 つの関数のいずれかが欠落している場合、私の設定では、次まで待機する必要があります。 0、1、2、3、4 はすべてキャッシュされ、最終的にまとめて出力されます
最後に、Laruence さんのブログの一部を引用します。皆さんの理解の助けになれば幸いです
マニュアルの ob_flush/flush の説明は出力バッファをリフレッシュするものであり、併用する必要があるため、多くの人に混乱を引き起こす可能性があります...
実際には、異なるオブジェクトに対して動作する場合もあります。
場合によっては、フラッシュは何も行いません。ob_* 系関数はPHP自体の出力バッファを操作します。
つまり、ob_flush は PHP 自身のバッファをフラッシュすることです。
そして厳密に言えば、これは PHP が Apache のモジュール (ハンドラーまたはフィルター) としてインストールされている場合にのみ実際に効果を持ちます。Web サーバー (特に Apache と考えられます) のバッファーをリフレッシュします。
Apache モジュールの sapi の下で、flush は sapi_module のフラッシュ メンバー関数ポインターを呼び出すことで間接的に Apache API を呼び出します。 ap_rflush は Apache の出力バッファーを更新します もちろん、マニュアルには Apache の他のモジュールもあると記載されています。このアクションの結果が変更される可能性があります。www.bkjia.com
1. mod_gzip などの一部の Apache モジュールは、それ自体で出力キャッシュを実行する可能性があります。2. これにより、flush() 関数によって生成された結果がクライアントのブラウザーに送信されなくなります。すぐに。
3.
4. ブラウザでも受信したコンテンツを表示する前にキャッシュします。たとえば、Netscape
5. ブラウザは改行または HTML タグの先頭を受け取るまでコンテンツをキャッシュし、 タグを受け取るまでテーブル全体は表示されません。
7.
8. Microsoft Internet Explorer の一部のバージョンは、256 バイトを受信した後でのみページの表示を開始するため、これらのブラウザーがページのコンテンツを表示できるようにするには、いくつかの追加のスペースを送信する必要があります。
したがって、この 2 つを使用する正しい順序は、最初に ob_flush、次にフラッシュです。
もちろん、他の sapi では、flush を呼び出すことはできませんが、コードの移植性を確保するために、次のことをお勧めします。一緒に使ってください。
http://www.bkjia.com/PHPjc/327577.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
