出力バッファリングとは何ですか? PHP でそれを使用するのはなぜですか?
8 に答える
出力バッファリング(デフォルト)がない場合、PHPがスクリプトを処理するときにHTMLがブラウザに分割して送信されます。出力バッファリングを使用すると、HTMLは変数に格納され、スクリプトの最後に1つのピースとしてブラウザに送信されます。
Web開発者にとっての出力バッファリングの利点
- 出力バッファリングのみをオンにすると、PHPがHTMLを処理するときにHTMLがブラウザに分割して送信されないため、HTMLのダウンロードとレンダリングにかかる時間が短縮されます。
- PHP文字列で実行できるすべての凝った作業は、HTMLページ全体を1つの変数として実行できるようになりました。
- Cookieの設定中に「警告:ヘッダー情報を変更できません-ヘッダーは(出力)によって既に送信されています」というメッセージが表示された場合は、出力バッファリングが答えであることがわかります。
出力バッファリングは、パフォーマンスを向上させ、いくつかのトリックを実行するためにPHPによって使用されます。
PHPですべての出力をバッファに保存し、すべてを一度に出力して、ネットワークパフォーマンスを向上させることができます。
特定の状況では、ブラウザに送り返さずにバッファコンテンツにアクセスできます。
この例を考えてみましょう。
<?php
ob_start( );
phpinfo( );
$output = ob_get_clean( );
?>
上記の例では、出力をブラウザーに送信するのではなく、変数にキャプチャします。output_bufferingはデフォルトでオフになっています。
- コンテンツの送信後にヘッダーを変更する場合は、出力バッファリングを使用できます。
この例を考えてみましょう。
<?php
ob_start( );
echo "Hello World";
if ( $some_error )
{
header( "Location: error.php" );
exit( 0 );
}
?>
出力制御機能を使用すると、スクリプトから出力を送信するタイミングを制御できます。これは、特にスクリプトがデータの出力を開始した後にヘッダーをブラウザーに送信する必要がある場合に、いくつかの異なる状況で役立ちます。出力制御関数は、header()またはsetcookie()を使用して送信されるヘッダーには影響せず、echo()やPHPコードのブロック間のデータなどの関数にのみ影響します。
http://php.net/manual/en/book.outcontrol.php
その他のリソース:
名前が示すように、ここでは、スクリプトの出力がどのように表示されるかを管理するために使用されるメモリバッファがあります。
これは、このトピックに関する非常に優れたチュートリアルの1つです。