CIV. Output Control 輸出控制函數

簡介

輸出控制函數可以用來控制腳本的輸出。這些函數在某些特殊情況下很有用,特別是腳本中已經輸出了訊息之後再想向瀏覽器傳送標頭的情況。輸出控制函數不會作用於 header()setcookie() 函數傳送的標頭,而只會影響類似於 echo() 函數輸出的訊息和內嵌在 PHP 代碼之間的訊息。

需求

要編譯本增加模組無需外部庫檔案。

安裝

本增加模組作為 PHP 內核的一部分,無需安裝即可使用。

運行時配置

這些函數的行為受 php.ini 的影響。

表格 1. 輸出控制配置選項

名稱預設值作用範圍修正記錄
output_buffering"0"PHP_INI_PERDIR 
output_handlerNULLPHP_INI_PERDIR自 PHP 4.0.4 起可用
implicit_flush"0"PHP_INI_ALL在 PHP <= 4.2.3 版本中是 PHP_INI_PERDIR
有關 PHP_INI_* 常量進一步的細節與定義參見附錄 G

以下是配置選項的簡要解釋。

output_buffering boolean/integer

該選項設定為 On 時,將在所有的腳本中使用輸出控制。若果要限制輸出緩沖區的最大值,可將該選項設定為特殊的最大位元組數(例如 output_buffering=4096)。從PHP 4.3.5 版開始,該選項在 PHP-CLI 下總是為 Off。

output_handler string

該選項可將腳本所有的輸出,重導至一個函數。例如,將 output_handler 設定為 mb_output_handler() 時,字元的編碼將被修改為特殊的編碼。設定的任何處理函數,將自動的處理輸出緩衝。

注: 不能同時使用 mb_output_handler()ob_iconv_handler(),也不能同時使用 ob_gzhandler()zlib.output_compression

注: 只有內建函數可以使用此指令。對於會員定義的函數,使用 ob_start()

implicit_flush boolean

預設為 FALSE。如將該選項改為 TRUE,PHP 將使輸出層,在每段訊息塊輸出後,自動重整。這等同於在每次使用 print()echo() 等函數或每個 HTML 塊之後,呼叫 PHP 中的 flush() 函數。

不在web環境中使用 PHP 時,開啟這個選項對程式執行的效能有嚴重的影響,通常只推薦在除錯時使用。在 CLI SAPI 的執行模式下,該旗標預設為 TRUE

參見 ob_implicit_flush()

資源類型

本增加模組未定義任何資源類型。

預定義常量

本增加模組未定義任何常量。

範例

例子 1. 輸出控制例子

<?php

ob_start
();
echo 
"Hello\n";

setcookie("cookiename""cookiedata");

ob_end_flush();

?>

在上面的例子中,函數 echo() 輸出訊息將被儲存在輸出緩衝中,直到 ob_end_flush() 函數被呼叫。和期望的一樣,setcookie() 函數存儲 cookie 的時候沒有導致錯誤(通常情況下,已經有資料輸出後,是不能標準地向瀏覽器傳送標頭的)。

注: 當從 PHP 4.1(內含 4.2)升級到 4.3 時,由於早期版本的 bug,必須確保在 php.ini 中將implict_flush 設定成 OFF,否則所有由 ob_start() 函數處理的訊息都會被直接輸出。

參見

參見 header()setcookie()

目錄
flush -- 重整輸出緩衝
ob_clean --  Clean (erase) the output buffer
ob_end_clean --  Clean (erase) the output buffer and turn off output buffering
ob_end_flush --  Flush (send) the output buffer and turn off output buffering
ob_flush --  Flush (send) the output buffer
ob_get_clean --  Get current buffer contents and delete current output buffer
ob_get_contents --  Return the contents of the output buffer
ob_get_flush --  Flush the output buffer, return it as a string and turn off output buffering
ob_get_length --  Return the length of the output buffer
ob_get_level --  Return the nesting level of the output buffering mechanism
ob_get_status --  Get status of output buffers
ob_gzhandler --  ob_start callback function to gzip output buffer
ob_implicit_flush --  Turn implicit flush on/off
ob_list_handlers --  List all output handlers in use
ob_start -- Turn on output buffering
output_add_rewrite_var --  Add URL rewriter values
output_reset_rewrite_vars --  Reset URL rewriter values