ob_get_flush

関数の概要

PHPの ob_get_flush 関数は、現在の出力バッファの内容を取得し、そのバッファをクリアすると同時に内容をブラウザなどのクライアントに送信します。つまり、バッファに溜めた出力を取得しつつ、それを画面に表示(フラッシュ)する役割を持ちます。通常の ob_get_contentsob_flush の処理を一度に行うため、出力制御を簡潔にしたい場合に便利です。

パラメータの説明

  • なしob_get_flush はパラメータを必要としません。出力バッファが有効な状態で呼び出す必要があります。

戻り値

現在の出力バッファの内容を文字列で返します。もし出力バッファが有効でない場合やバッファが空の場合は false を返します。

使用例

基本的な使い方

<?php
ob_start();

echo "こんにちは、世界!";

$content = ob_get_flush();

var_dump($content);
?>

このコードは、出力バッファを開始して「こんにちは、世界!」をバッファに書き込みます。ob_get_flush() でバッファの中身を取得しつつ、ブラウザに内容を送信してバッファをクリアします。最後に内容を変数に格納して var_dump で表示しています。

複数回のバッファ取得と送信

<?php
ob_start();
echo "ここはバッファ1です。";

echo "<br>";
echo ob_get_flush(); // 「ここはバッファ1です。」を取得し送信

echo "ここはバッファ2です。";

$content = ob_get_flush(); // 「ここはバッファ2です。」を取得し送信

var_dump($content);
?>

一回目の ob_get_flush() で最初のバッファを送信し、二回目は新たに書き込んだ内容を同様に取得・送信しています。繰り返しバッファ取得と送信が可能です。

HTMLをバッファリングして後から一括送信

<?php
ob_start();

?>
<h1>タイトル</h1>
<p>これはサンプルの段落です。</p>
<?php

$html = ob_get_flush();

file_put_contents('log.txt', $html); // バッファ内容をファイル保存

?>

この例ではHTMLの一部を出力バッファに書き込み、ob_get_flush() で内容を取得・送信しつつ、同時にファイルに保存しています。出力とログの両立に便利です。

関連する関数

  • ob_start() – 出力バッファリングを開始する
  • ob_get_contents() – 出力バッファの内容を取得する(送信はしない)
  • ob_flush() – 出力バッファの内容を送信し、バッファはクリアしない
  • ob_end_flush() – 出力バッファの内容を送信し、バッファリングを終了する

まとめ

ob_get_flush は、PHPで出力バッファリングを使う際に非常に便利な関数です。バッファの内容を取得しながら画面にそのまま送信したいシーンで役立ちます。特に複数回にわたるバッファの取得やログ出力と同時に画面出力を行いたい場合に活用すると、コードがすっきり書けます。出力制御をスムーズに行いたい初心者や中級者にオススメの関数です。