ホームページ  >  記事  >  バックエンド開発  >  PHP出力キャッシュの使用例チュートリアル

PHP出力キャッシュの使用例チュートリアル

WBOY
WBOYオリジナル
2016-07-25 08:52:31846ブラウズ
この記事では、PHP 出力キャッシュの使用法を紹介します。PHP におけるいわゆる出力キャッシュとは、スクリプトの実行後、または出力キャッシュ コマンドの実行後に、コード内のエコーまたはその他の出力コマンドが最初に PHP バッファーに書き込まれることを意味します。強制的に実行するとブラウザにデータが出力されます。

1.PHP出力キャッシュとは何ですか? PHP のいわゆる出力キャッシュとは、コード内のエコーまたはその他の出力コマンドが、実行時に最初に PHP バッファーに書き込まれることを意味します。データは、スクリプトが実行されるか、出力キャッシュ コマンドが実行された後にのみブラウザーに出力されます。強制的に実行されます (このうち、php バッファーは php.ini に設定されている out_buffering です。デフォルトは on で、サイズが無制限であることを示します。サイズを制限する数値に変更できます)。

例:

「hlmblog.com」をエコーし​​ます。 「テクノロジー」をエコーし​​ます。 エコー「共有」;

これら 2 つのエコーは順番にバッファーに挿入され、データはスクリプトの実行が完了するか、キャッシュ出力が強制された後にのみブラウザーに出力されます。 リアルタイムでエコー データを出力します。

ob_end_flush(); //以下で説明するように、PHP キャッシュをオフにするか、flush() の前に ob_flush() を実行します。 echo str_pad(" ", 256); for ($i=5; $i>0; $i--) { $i をエコーし​​ます。 流す(); スリープ(1); }
注:

1: flash と ob_flush の違い: 一見すると、この 2 つはよく似ていますが、多くのマニュアルの説明は不明確で曖昧です。実際、この 2 つは大きな違いがあります。 php.ini で php バッファ キャッシュが有効になっていない場合、php スクリプトによって出力されたコンテンツはサーバー上で出力を待機し、現時点ではキャッシュがオンになっていないため、出力キャッシュに保存されません。出力を待機しているコンテンツを即座にフラッシュするために使用され、出力はクライアント (ブラウザーまたは他の出力端末) に送信されます。

php.ini が php バッファ キャッシュをオンにすると、php スクリプトの出力コンテンツが出力キャッシュに保存されます。この時点では、flush を使用しても効果はありません。データが取得できません。したがって、まず ob_flush を使用して出力キャッシュからコンテンツを取り出し、出力待ちの状態にしてから、flush を使用してコンテンツをクライアントに送信する必要があります。実行順序は、最初に ob_flush、次にフラッシュです。 したがって、リアルタイム出力を実現するには、ob_end_flush を使用して最初に php 出力キャッシュをオフにしてから直接フラッシュするか、最初に ob_flush を使用してからフラッシュします。

2: ブラウザはリアルタイム データを出力できません 変更されたコードは、Chrome、Firefox、IE、およびその他のブラウザーで一度出力されます。

ob_end_flush(); // フラッシュする前に php キャッシュをオフにするか、ob_flush(); echo str_pad(" ", 256); for ($i=5; $i>0; $i--) { $i をエコーし​​ます。 流す(); スリープ(1); }

htmlタグを追加するだけでリアルタイムに出力できます。 その理由は、HTML タグが見つかった場合にのみ即座に出力されるためです。幸いなことに、出力コンテンツには通常 HTML タグが含まれ、プレーン テキストが含まれることはほとんどありません。 解決策: 問題を解決するには、キャリッジ リターンまたはその他の HTML タグを追加します。

2. キャッシュ出力の制御例 1. 静的ページの生成 静的ページはすぐに読み込まれます

echo str_pad('', 1024); // バッファをオーバーフローさせます。 ob_start();//バッファをオープンする $content = ob_get_contents();// ページによって出力されたコンテンツを取得します $f = fopen('./index.html', 'w'); fwrite($f, $content);//コンテンツを txt ファイルに書き込みます fclose($f); ob_end_clean();//バッファをクリアして閉じる

2. 出力をキャプチャする

関数テスト($param) { if($param) { ob_start(); eval($param); $contents = ob_get_contents(); ob_end_clean(); }それ以外 { echo '残念ながら出力はありません'; 出口(); } $content を返します。 }


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。