LXXVIII. Output Control Functions
Introduction
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.
Requirements
No external libraries are needed to build this extension.
Installation
There is no installation needed to use these functions;
they are part of the PHP core.
Runtime Configuration
The behaviour of these functions is affected by settings
in php.ini.
Table 1. Output Control configuration options
Name Default Changeable
output_buffering "0" PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler NULL PHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush "0" PHP_INI_PERDIR|PHP_INI_SYSTEM
For further details and definition of the PHP_INI_* constants
see ini_set().
Here's a short explanation of the configuration directives.
output_buffering boolean/integer
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).
output_handler string
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.
Note: You cannot use both mb_output_handler() with ob_inconv_handler()
and you cannot use both ob_gzhandler() and zlib.output_compression.
implicit_flush boolean
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().
Resource Types
This extension has no resource types defined.
Predefined Constants
This extension has no constants defined.
Examples
Example 1. Output Control example
<?php
ob_start();
echo "Hello\n";
setcookie("cookiename", "cookiedata");
ob_end_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.)
Note: 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 not be hidden from output.
See Also
See also header() and setcookie().
Table of Contents
flush -- Flush the output buffer
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