PHP 8.4.2 Released!

ob_get_level

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

ob_get_levelВозвращает уровень вложенности механизма буферизации вывода

Описание

ob_get_level(): int

Возвращает уровень вложенности механизма буферизации вывода.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает уровень вложенности обработчиков буферизации вывода или 0, если буферизация не активна.

Предостережение

Функции ob_get_level() и ob_get_status() по-разному оценивают один и тот же уровень вложенности; значение отклонено на единицу. Для функции ob_get_level() первый уровень — это 1. Тогда как для функции ob_get_status() первый уровень — это 0.

Смотрите также

  • ob_start() - Включает буферизацию вывода
  • ob_get_status() - Получает статус буфера вывода
  • ob_get_contents() - Возвращает содержимое буфера вывода

Добавить

Примечания пользователей 3 notes

up
55
Anonymous
12 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
10
Anonymous
9 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();
}
up
2
bonzini at gnu dot org
20 years ago
Even under older PHP, you can decide if output buffering is active (i.e. ob_get_level() > 0) using

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

Paolo
To Top