ホームページ  >  記事  >  バックエンド開発  >  PHP における出力バッファリングの原理と応用

PHP における出力バッファリングの原理と応用

藏色散人
藏色散人転載
2019-10-22 13:43:071997ブラウズ

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_get_contents()

//获取当前ob缓存中的内容
ob_get_contents()

ob_get_clean()

//获取当前ob缓存中的内容,并且清空当前的ob缓存
ob_get_clean()

ob_flush()

//将ob缓存中的内容,刷到程序缓存中,但并没有关闭ob缓存
ob_flush()

ob_end_flush()

//关闭ob缓存,并将数据刷回到程序缓存中
ob_end_flush()

ob_clean()

//将ob缓存中的内容清空
ob_clean()

ob_end_clean()

//将ob缓存中的数据清空,并且关闭ob缓存
ob_end_clean()

注 ob_start($callback) コールバック

<?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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。