PHP 8.5.0 Alpha 1 available for testing

ob_get_level

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

ob_get_levelDevuelve el número de niveles de anidación del sistema de temporización de salida

Descripción

ob_get_level(): int

Devuelve el número de niveles de anidación del sistema de temporización de salida.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve el número de niveles de anidación del sistema de temporización de salida, y cero si no está activo.

Precaución

El valor para los niveles idénticos entre ob_get_level() y ob_get_status() difiere en uno. Para ob_get_level(), el primer nivel es 1. Mientras que para ob_get_status(), el primer nivel es 0.

Ver también

add a note

User Contributed Notes 2 notes

up
55
Anonymous
13 years ago
For users confused about getting "1" as a return value from ob_get_level at the beginning of a script: this likely means the PHP ini directive "output_buffering" is not set to off / 0. PHP automatically starts output buffering for all your scripts if this directive is not off (which acts as if you called ob_start on the first line of your script).

If your scripts may end up on any server and you don't want end-users to have to configure their INI, you can use the following at the start of your script to stop output buffering if it's already started:
<?php
if (ob_get_level()) ob_end_clean();
?>

Alternatively, you can use the opposite if you always want to have an output buffer at the start of your script:
<?php
if (!ob_get_level()) ob_start();
?>
up
9
Anonymous
10 years ago
This can be used to handle exceptions properly when using output buffering for rendering a view which may or may not be using output buffering

<?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();
}
To Top