ob_end_flush

関数の概要

ob_end_flush は、PHPの出力バッファリング機能を終了し、バッファに貯められていた内容をブラウザへ送信するための関数です。出力バッファリング中に出力されたデータを即座に画面へ反映させたい場合に使います。

パラメータの説明

  • なし : ob_end_flush は引数を受け取りません。

戻り値

成功すると true を返します。バッファが存在しない場合や終了に失敗した場合は false を返します。

使用例

基本的な使い方

<?php
ob_start();
echo "Hello, world!";
ob_end_flush();
?>

この例では、ob_start() で出力バッファリングを開始し、echo の内容をバッファに貯めています。最後に ob_end_flush() でバッファを終了し、中身を画面に送信します。

部分的にバッファを出力してから処理を続ける例

<?php
ob_start();
echo "処理の最初の部分を出力。";

// ここでバッファを送信して終了
ob_end_flush();

// 続けて処理を行う
sleep(3);
echo " 次の処理が終了しました。";
?>

この例は、最初のメッセージをバッファに貯めてから即送信し、その後3秒待ってさらに文字列を出力します。ob_end_flush()により途中経過を画面に反映できます。

バッファ消去後に新たにバッファを開始する例

<?php
ob_start();
echo "最初のバッファの内容。";
ob_end_flush();

ob_start();
echo "新しいバッファ開始後の内容。";
ob_end_flush();
?>

複数回に分けてバッファリング処理を行いたい場合、このように ob_end_flush() でバッファを終了した後に新たに ob_start() を呼び出せます。

関連する関数

  • ob_start() : 出力バッファリングを開始する
  • ob_flush() : バッファの内容を出力するがバッファは終了しない
  • ob_end_clean() : バッファを破棄して終了する
  • flush() : PHPのバッファだけでなくWebサーバやブラウザにも強制的に送信させる

まとめ

ob_end_flush() は、PHPの出力バッファリング機能を終了してバッファ内の内容を即座に画面に表示させたいときに使う便利な関数です。バッファリングの開始は ob_start() 、途中送信は ob_flush()、不要なバッファ破棄は ob_end_clean() など用途に合わせて使い分けましょう。ウェブページの部分的な即時表示やパフォーマンス調整に役立ちます。