CI. Output Control 输出控制函数

简介

输出控制函数可以用来控制脚本的输出。这些函数在某些特殊情况下很有用,特别是脚本中已经输出了信息之后再想向浏览器发送标头的情况。输出控制函数不会作用于 header() setcookie() 函数发送的标头,而只会影响类似于 echo() 函数输出的信息和嵌入在 PHP 代码之间的信息。

需求

要编译本扩展模块不需要外部库文件。

安装

本函数库作为 PHP 内核的一部分,不用安装就能使用。

运行时配置

这些函数的行为受 php.ini 的影响。

表格 1. 输出控制配置选项

名称 默认值 作用范围 修正记录
output_buffering "0" PHP_INI_PERDIR  
output_handler NULL PHP_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() 函数处理的信息都会被直接输出。

目录
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