ホームページ >バックエンド開発 >PHPチュートリアル >PHP ネストされた出力バッファーのコード例、PHP ネストされたコード例_PHP チュートリアル
PHP の出力キャッシュはネストできます。 ob_get_level() を使用してネストレベルを出力します。
テストの結果、cli とブラウザ (PHP5.4) では出力結果が異なることがわかりました。
マニュアルの手順は次のとおりです:
ob_get_level() はデストラクター内で常に 0 を返します。
これは、デストラクターが呼び出される前に出力バッファーのガベージ コレクションがすでに完了しているために発生します
コードをコピーします コードは次のとおりです:
ob_end_clean();
echo ob_get_level(); //0
コードをコピーします コードは次のとおりです:
ob_end_clean();
ob_start();
echo 'php1';//ページには出力されません
$a = ob_get_level();
$b = ob_get_contents();//キャッシュされた結果を取得し、変数に代入します
ob_clean();
ob_start();
echo 'php2';//ページには出力されません
$c = ob_get_level();
$d = ob_get_contents();//キャッシュされた結果を取得して変数に代入します
ob_clean();
ob_start();
echo 'php3';//ページには出力されません
$e = ob_get_level();
$f = ob_get_contents();//キャッシュされた結果を取得し、変数に代入します
ob_clean();
echo 'level:'.$a.',output:'.$b.'
';
echo 'level:'.$c.',output:'.$d.'
';
echo 'level:'.$e.',output:'.$f.'
';
コードをコピーします コードは次のとおりです:
レベル:1、出力:php1
レベル:2、出力:php2
レベル:3、出力:php3
コードをコピーします コードは次のとおりです:
ob_end_clean();
ob_start();
エコー 'php1';
$a = ob_get_level();
$b = ob_get_contents();
ob_clean();
ob_start();
エコー 'php2';
$c = ob_get_level();
$d = ob_get_contents();
ob_end_clean(); // キャッシュをクリアしてキャッシュを閉じる
ob_start();
エコー 'php3';
$e = ob_get_level();
$f = ob_get_contents();
ob_clean();
echo 'level:'.$a.',output:'.$b.'
';
echo 'level:'.$c.',output:'.$d.'
';
echo 'level:'.$e.',output:'.$f.'
';
コードをコピーします コードは次のとおりです:
レベル:1、出力:php1
レベル:2、出力:php2
レベル:2、出力:php3