The Output Control functions allow you to control
when output is sent from the script. This can be useful
in several different situations, especially if you need
to send headers to the browser after your script has
began outputting data. The Output Control functions do
not affect headers sent using
header() or
setcookie(), only functions
such as echo() and data between blocks of
PHP code.
php.ini中的設定會影響這些函數的行為。
表格 1. Output Control configuration
options
Here is a short explanation of the configuration
directives.
You can enable output buffering for all
files by setting this directive to 'On'. If you
wish to limit the size of the buffer to a certain
size - you can use a maximum number of bytes
instead of 'On', as a value for this directive
(e.g., output_buffering=4096).
You can redirect all of the output of your
scripts to a function. For example, if you set
output_handler to mb_output_handler(), character
encoding will be transparently converted to the
specified encoding. Setting any output handler
automatically turns on output buffering.
注: You cannot use both mb_output_handler() with ob_inconv_handler() and you cannot use both ob_gzhandler() and zlib.output_compression.
FALSE by
default. Changing this to
TRUE tells PHP to tell the output
layer to flush itself automatically after every
output block. This is equivalent to calling the
PHP function
flush() after each and every call to
print() or
echo() and each and
every HTML block.
When using PHP
within an web environment, turning this option on
has serious performance implications and is
generally recommended for debugging purposes
only. This value defaults to TRUE when operating under
the CLI SAPI.
See also ob_implicit_flush().
In the above example, the output from echo()
would be stored in the output buffer until
ob_end_flush() was called. In the mean time,
the call to setcookie() successfully stored a
cookie without causing an error. (You can not normally
send headers to the browser after data has already been
sent.)
注: When upgrading from PHP 4.1 (and 4.2) to 4.3 that due to a bug in earlier versions you must ensure that implict_flush is OFF in your php.ini, otherwise any output with ob_start() will be not be hidden from output.
See also header() and
setcookie().