PHP 8.4.3 Released!

出力制御 関数

参考

header()およびsetcookie() も参照ください。

目次

  • flush — システム出力バッファをフラッシュする
  • ob_clean — アクティブな出力バッファの内容をクリア(消去)する
  • ob_end_clean — アクティブな出力用バッファをクリア(消去)し、出力のバッファリングをオフにする
  • ob_end_flush — アクティブな出力用バッファをフラッシュ(送信)し、アクティブな出力バッファをオフにする
  • ob_flush — アクティブな出力ハンドラの戻り値をフラッシュ(送信)する
  • ob_get_clean — アクティブな出力バッファの内容を取得し、そのバッファをオフにする
  • ob_get_contents — 出力用バッファの内容を返す
  • ob_get_flush — アクティブな出力ハンドラの戻り値をフラッシュ(送信)し、その内容を文字列として返した後で、それをオフにする
  • ob_get_length — 出力バッファの長さを返す
  • ob_get_level — 出力バッファリング機構のネストレベルを返す
  • ob_get_status — 出力バッファのステータスを取得する
  • ob_implicit_flush — 自動フラッシュをオンまたはオフにする
  • ob_list_handlers — 使用中の出力ハンドラの一覧を取得する
  • ob_start — 出力のバッファリングを有効にする
  • output_add_rewrite_var — URL リライタの値を追加する
  • output_reset_rewrite_vars — URL リライタの値をリセットする
add a note

User Contributed Notes 3 notes

up
17
jgeewax a t gmail
17 years ago
It seems that while using output buffering, an included file which calls die() before the output buffer is closed is flushed rather than cleaned. That is, ob_end_flush() is called by default.

<?php
// a.php (this file should never display anything)
ob_start();
include(
'b.php');
ob_end_clean();
?>

<?php
// b.php
print "b";
die();
?>

This ends up printing "b" rather than nothing as ob_end_flush() is called instead of ob_end_clean(). That is, die() flushes the buffer rather than cleans it. This took me a while to determine what was causing the flush, so I thought I'd share.
up
5
Anonymous
15 years ago
You possibly also want to end your benchmark after the output is flushed.

<?php
your_benchmark_start_function
();

ob_start ();
for (
$i = 0; $i < 5000; $i++)
echo
str_repeat ("your string blablabla bla bla", (rand() % 4) + 1)."<br>\n";

<----------
echo
your_benchmark_end_function(); |
ob_end_flush (); ------------------------
?>
up
3
gruik at libertysurf dot fr
20 years ago
For those who are looking for optimization, try using buffered output.

I noticed that an output function call (i.e echo()) is somehow time expensive. When using buffered output, only one output function call is made and it seems to be much faster.
Try this :

<?php
your_benchmark_start_function
();

for (
$i = 0; $i < 5000; $i++)
echo
str_repeat ("your string blablabla bla bla", (rand() % 4) + 1)."<br>\n";

echo
your_benchmark_end_function();
?>

And then :

<?php
your_benchmark_start_function
();

ob_start ();
for (
$i = 0; $i < 5000; $i++)
echo
str_repeat ("your string blablabla bla bla", (rand() % 4) + 1)."<br>\n";

echo
your_benchmark_end_function();
ob_end_flush ();
?>
To Top