出力バッファリング出力バッファリングとは、ブラウザ(Web の場合) や シェル(コマンドラインの場合) に出力をフラッシュ(送信して破棄)する前に、 バッファリング(一時的に保存) することです。 出力バッファリングが有効な間は、スクリプトから出力は送信されず、 代わりに内部バッファに保存されます。 PHPに影響するバッファリングPHP は、出力をフラッシュする際に、 基礎となる ソフトウェア/ハードウェア のインフラストラクチャに依存します。 コマンドライン上のコンソールで実装されているバッファリング (例: 行バッファリング(訳注: 改行されるごとにフラッシュされる)) や Web のコンテキストにおける ウェブサーバー やブラウザが実装するバッファリング (例: フルバッファリング(訳注:バッファが一杯になったらフラッシュされる)) は、 エンドユーザーに出力を表示するタイミングに影響を与えます。 サーバの設定を微調整したり、 さまざまなレイヤーのバッファサイズを揃えたりすることで、これらの影響のいくつかを取り除くことができます。 PHPにおける出力バッファリングの制御PHP は、ユーザレベルの出力バッファを提供しており、 バッファリングを開始したり、管理したり、無効にしたりする関数を提供しています。 (これらの関数のほとんどは、ob_* 関数にあります) そして、既存のシステムバッファをフラッシュするための関数をふたつ (flushと ob_implicit_flush) 提供しています。 これらの機能の中には、php.ini を適切に設定することで、 設定や構成できるものがあります。 バッファリングの用途出力バッファリングは一般的に、 バッファリングされた出力を修正したり、検査したり、 リクエストの中で出力を複数回使う場合に有用です。 あるいは、出力をフラッシュするタイミングを制御したい場合にも有用です。 具体的な使用例として、以下が挙げられます:
|