php キャッシュ プロセス
PHP をリクエストするプロセスでは、実際には 3 つのキャッシュがあります:
1. プログラム キャッシュ
2。 ob キャッシュ
3. ブラウザ キャッシュ.
ob を開くための 2 つの方法
##1. php.ini で設定; Output_buffering = 4096 ; ここに署名してください2 php ページで ob_start() を使用します;php.ini を通じて開いた場合、すべての php ページに適用されます。 ob_start() で開くとページにのみ影響しますob キャッシュの知識ポイント
サービスでは、ob キャッシュを有効にすると、最初にエコー データが配置されます Enter ob PHP ページが最後まで実行されると、ob キャッシュされたデータ (存在する場合) がプログラム キャッシュに強制的に更新され、データは Apache を通じて http 応答パッケージにカプセル化されて返されます。ブラウザob がない場合、すべてのデータはプログラム キャッシュに直接置かれます。 ob を有効にするかどうかに関係なく、ヘッダー情報は常にプログラム キャッシュに入れられます。ob 関連関数
ob_start($callback)//在当前页面中开启ob,注意callback ob_start($callback);
//获取当前ob缓存中的内容 ob_get_contents()
//获取当前ob缓存中的内容,并且清空当前的ob缓存 ob_get_clean()
//将ob缓存中的内容,刷到程序缓存中,但并没有关闭ob缓存 ob_flush()
//关闭ob缓存,并将数据刷回到程序缓存中 ob_end_flush()
//将ob缓存中的内容清空 ob_clean()
//将ob缓存中的数据清空,并且关闭ob缓存 ob_end_clean()
<?php ob_start("callback_func"); function callback_func($str){ return "callback".$str; } echo "123";//输出:callback123
アプリケーション シナリオ
header() が送信される前のエラー レポートエラー コード
<?php echo "before_header"; header("Content-type:text/html;charset=utf-8"); echo "after_header";
Warning: Cannot modify header information - headers already sent by (output started at /Users/shuchao/Desktop/test.php:2) in /Users/shuchao/Desktop/test.php on line 3
Solution
ヘッダーを送信する前に ob を有効にすると、すべてのエコー コンテンツが ob に送信され、エラーが解決されます。<?php ob_start(); echo "before_header\n"; header("Content-type:text/html;charset=utf-8"); echo "after_header\n";
before_header after_header
以上がPHP における出力バッファリングの原理と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。