ob_get_level
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
ob_get_level — 出力バッファリング機構のネストレベルを返す
パラメータ
この関数にはパラメータはありません。
戻り値
出力バッファリングハンドラのネストレベルを返します。 バッファリングがアクティブでない場合はゼロを返します。
警告
ob_get_level()
と ob_get_status()
が返す同じレベルの値は、1だけ差があります。
ob_get_level() では最初のレベルは
1
ですが、ob_get_status()
の最初のレベルは 0
です。
参考
- ob_start() - 出力のバッファリングを有効にする
- ob_get_status() - 出力バッファのステータスを取得する
- ob_get_contents() - 出力用バッファの内容を返す
+add a note
User Contributed Notes 3 notes
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();
?>
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();
}
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
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google