PHP Conference Japan 2024

ob_get_status

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

ob_get_status取得輸出緩衝區的狀態

說明

ob_get_status(bool $full_status = false): array

ob_get_status() 會傳回最上層輸出緩衝區的狀態資訊,如果 full_status 設為 true,則會傳回所有作用中輸出緩衝區層級的狀態資訊。

參數

full_status

設為 true 以傳回所有作用中輸出緩衝區層級。如果設為 false 或未設定,則只會傳回最上層輸出緩衝區。

傳回值

如果省略 full_status 或其值為 false,則會傳回一個簡單的陣列,其中包含作用中輸出層級的狀態資訊。

如果 full_statustrue,則會傳回一個陣列,其中每個作用中輸出緩衝層級都有一個元素。輸出層級會用作頂層陣列的鍵,而每個陣列元素本身是另一個陣列,其中包含一個作用中輸出層級的狀態資訊。

如果未開啟輸出緩衝,則會傳回一個空陣列。

ob_get_status() 傳回的陣列元素
name 作用中輸出處理程式的名稱(詳情請參閱 ob_list_handlers() 的傳回值)
type 0(內部處理程式)或 1(使用者提供的處理程式)
flags ob_start() 設定的旗標位元遮罩、輸出處理程式的類型(見上文)以及緩衝程序的狀態(PHP_OUTPUT_HANDLER_* 常數)。如果處理程式成功處理緩衝區且未傳回 false,則會設定 PHP_OUTPUT_HANDLER_STARTEDPHP_OUTPUT_HANDLER_PROCESSED。如果處理程式在處理緩衝區時失敗或傳回 false,則會設定 PHP_OUTPUT_HANDLER_STARTEDPHP_OUTPUT_HANDLER_DISABLED
level 輸出巢狀層級(從零開始)。請注意,ob_get_level() 為相同層級傳回的值會相差一。對於 ob_get_status(),第一層為 0,而對於 ob_get_level(),第一層為 1
chunk_size 區塊大小(以位元組為單位)。由 ob_start() 設定,或啟用 output_buffering 並將其值設為正整數時設定。
buffer_size 輸出緩衝區大小(以位元組為單位)
buffer_used 輸出緩衝區中資料的大小(以位元組為單位)(與 ob_get_length() 的整數傳回值相同)

範例

範例 #1:當 full_statusfalse 時傳回的陣列

Array
(
    [name] => URL-Rewriter
    [type] => 0
    [flags] => 112
    [level] => 2
    [chunk_size] => 0
    [buffer_size] => 16384
    [buffer_used] => 1024
)

範例 #2:當 full_statustrue 時傳回的陣列

Array
(
    [0] => Array
        (
            [name] => default output handler
            [type] => 0
            [flags] => 112
            [level] => 1
            [chunk_size] => 0
            [buffer_size] => 16384
            [buffer_used] => 2048
        )

    [1] => Array
        (
            [name] => URL-Rewriter
            [type] => 0
            [flags] => 112
            [level] => 2
            [chunk_size] => 0
            [buffer_size] => 16384
            [buffer_used] => 1024
        )

)

參見

新增筆記

使用者貢獻的筆記 1 則筆記

rmagalhaess at hotmail dot com
7 年前
ob_get_status() 返回的陣列中的欄位如下:

陣列
(
[name] => 預設輸出處理器
[type] => 0
[flags] => 112
[level] => 1
[chunk_size] => 0
[buffer_size] => 16384
[buffer_used] => 0
)

這些值會在 ob_start() 函式執行後立即填入。
To Top