PHP Conference Japan 2024

ob_get_level

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

ob_get_level返回输出缓冲机制的嵌套级别

描述

ob_get_level(): int

返回输出缓冲机制的嵌套级别。

参数

此函数没有参数。

返回值

返回嵌套输出缓冲处理程序的级别,如果输出缓冲未激活则返回零。

注意

ob_get_level()ob_get_status() 之间相同级别的值相差 1。对于 ob_get_level(),第一级是 1。而对于 ob_get_status(),第一级是 0

参见

添加注释

用户贡献的注释 3 条注释

匿名用户
12 年前
对于对脚本开始时从 ob_get_level 获取返回值 "1" 感到困惑的用户:这可能意味着 PHP ini 指令 "output_buffering" 未设置为关闭 / 0。如果此指令未关闭,PHP 会自动为所有脚本启动输出缓冲(这就像在脚本的第一行调用了 ob_start)。

如果您的脚本可能最终位于任何服务器上,并且您不希望最终用户配置其 INI,则可以在脚本的开头使用以下内容,如果输出缓冲已启动,则停止输出缓冲
<?php
if (ob_get_level()) ob_end_clean();
?>

或者,如果您始终希望在脚本的开头有一个输出缓冲,则可以使用相反的操作
<?php
if (!ob_get_level()) ob_start();
?>
匿名用户
9 年前
这可以用于在使用输出缓冲渲染可能使用或可能不使用输出缓冲的视图时正确处理异常

<?php

function getView($view)
{
$level = ob_get_level();

ob_start();

try
{
include
$view;
}

catch (
Exception $e)
{
while (
ob_get_level() > $level)
{
ob_end_clean();
}

throw
$e;
}

return
ob_get_clean();
}
bonzini at gnu dot org
20 年前
即使在旧版本的 PHP 中,您也可以使用以下方法确定输出缓冲是否处于活动状态(即 ob_get_level() > 0)

<?php $ob_active = ob_get_length () !== FALSE ?>

Paolo
To Top