出力バッファリングは、PHPがクライアントにデータをプッシュする前に内部に保持する必要のある出力データ(ヘッダーとCookieを除く)の量を制御するためのメカニズムです。アプリケーションの出力がこの設定を超える場合、PHPはそのデータをおおよそ指定したサイズのチャンクで送信します。この設定をオンにして最大バッファサイズを管理すると、アプリケーションとWebサーバーによっては興味深い副作用が発生する可能性があります。印刷またはエコーを介して出力を送信した後、ヘッダーとCookieを送信できる場合があります。また、バッファリングされた出力が原因でサーバーが出力するパケットが少ない場合、出力を取得するときにPHPが出力をストリーミングする場合と比較して、パフォーマンスが向上する場合があります。本番サーバーでは、パフォーマンス上の理由から4096バイトが適切な設定です。
注:出力バッファリングは、出力バッファリング制御機能を介して制御することもできます。
php.ini可能な値:
On = Enabled and buffer is unlimited. (Use with caution)
Off = Disabled
Integer = Enables the buffer and sets its maximum size in bytes.
eg: output_buffering = Off
注:このディレクティブは、CLISAPIではオフにハードコーディングされています
http://php.net/output-buffering
output_bufferingが4096に設定されている場合の実用的な例
<?php
ob_start();
// Output string to overflow browser php.ini output_buffering setting.
echo str_repeat(PHP_EOL, 4097);
for ($i=0; $i<5; $i++) {
echo PHP_EOL.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>