出售域名  LinuxTags


Output Control 输出控制函数

简介

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

需求

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

安装

本扩展模块作为 PHP 内核的一部分,无需安装即可使用。

运行时配置

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

输出控制配置选项
名称 默认值 作用范围 修正记录
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_* 常量进一步的细节与定义参见php.ini 配置选项

以下是配置选项的简要解释。

output_buffering boolean/integer

该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096)。从PHP 4.3.5 版开始,该选项在 PHP-CLI 下总是为 Off。

output_handler string

该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。

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

Note: 只有内置函数可以使用此指令。对于用户定义的函数,使用 ob_start()

implicit_flush boolean

默认为 FALSE。如将该选项改为 TRUE,PHP 将使输出层,在每段信息块输出后,自动刷新。这等同于在每次使用 print()echo() 等函数或每个 HTML 块之后,调用 PHP 中的 flush() 函数。

不在web环境中使用 PHP 时,打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。在 CLI SAPI 的执行模式下,该标记默认为 TRUE

参见 ob_implicit_flush()

资源类型

本扩展模块未定义任何资源类型。

预定义常量

本扩展模块未定义任何常量。

范例

Example#1 输出控制例子

<?php

ob_start
();
echo 
"Hello\n";

setcookie("cookiename""cookiedata");

ob_end_flush();

?>

在上面的例子中,函数 echo() 输出信息将被保存在输出缓冲中,直到 ob_end_flush() 函数被调用。和期望的一样,setcookie() 函数存储 cookie 的时候没有导致错误(通常情况下,已经有数据输出后,是不能正常地向浏览器发送标头的)。

Note: 当从 PHP 4.1(包括 4.2)升级到 4.3 时,由于早期版本的 bug,必须确保在 php.ini 中将implict_flush 设置成 OFF,否则所有由 ob_start() 函数处理的信息都会被直接输出。

参见

参见 header()setcookie()

Table of Contents


出售域名  LinuxTags