PHP Conference Japan 2024

ob_get_flush

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_get_flush刷新(发送)活动输出处理程序的返回值,返回活动输出缓冲区的内容并将其关闭

描述

ob_get_flush(): 字符串|false

此函数调用输出处理程序(使用PHP_OUTPUT_HANDLER_FINAL标志),刷新(发送)其返回值,返回活动输出缓冲区的内容并关闭活动输出缓冲区。

ob_get_flush()在没有使用PHP_OUTPUT_HANDLER_REMOVABLE标志启动的活动输出缓冲区的情况下将失败。

ob_get_flush()将刷新(发送)输出处理程序的返回值,即使活动输出缓冲区是在没有PHP_OUTPUT_HANDLER_FLUSHABLE标志的情况下启动的。

参数

此函数没有参数。

返回值

成功时返回活动输出缓冲区的内容,失败时返回false

错误/异常

如果函数失败,它会生成一个E_NOTICE

示例

示例 #1 ob_get_flush() 示例

<?php
//使用 output_buffering=On
print_r(ob_list_handlers());

//将缓冲区保存到文件中
$buffer = ob_get_flush();
file_put_contents('buffer.txt', $buffer);

print_r(ob_list_handlers());
?>

以上示例将输出

Array
(
    [0] => default output handler
)
Array
(
)

参见

添加注释

用户贡献注释 3 条注释

info at pcdoctor dot fr
16 年前
你好,
这只是为了添加一个我一开始没有理解的行为。

ob_get_flush 实际上将缓冲区的内容作为文本返回,但它也会将缓冲区发送回浏览器,以便在用户屏幕上显示。

如果您不希望缓冲区发送到用户,请使用 ob_get_clean
taras dot dot dot di at gmail dot com
16 年前
我不知道这到底是如何工作的,但是如果你调用这个函数,PHP 的行为就像头部已经发送一样(即使输出已经进入字符串)。

这意味着您不能调用此函数,然后例如调用 setcookie。

这是通过反复试验验证的
zubin@byron
19 年前
对之前帖子的更正:ob_get_clean() 更好,即

<?php
// 开始生成 html
$html = '<html><head>'; // 等
// 开始输出缓冲
ob_start();
// 调用立即输出的函数
print_menu();
// 将此追加到 $html 并清空缓冲区
$html .= ob_get_clean();
?>
To Top