CI. 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