开发笔记📐 发现👽 人物👮 趣闻💦
PHP ob_start函数的使用方法和注意事项

PHP ob_start函数的使用方法和注意事项
2017-07-30 01:47:39   点击:

ob_start -打开输出缓冲(PHP 4,PHP 5,PHP 7)

bool ob_start ([ callable $output_callback = NULL [, int $chunk_size = 0 [, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS ]]] )

这个函数将输出缓冲。虽然输出缓冲是活动的,但没有从脚本(除了头文件)发送输出,而是将输出存储在内部缓冲区中。

使用ob_get_contents()将这个内部缓冲区的内容复制到一个字符串变量中。要输出存储在内部缓冲区中的内容,请使用ob_end_flush()。或者,ob_end_clean()将静默地丢弃缓冲区内容。

注意:一些web服务器(如Apache)在调用回调函数时更改了脚本的工作目录。您可以通过chdir(dirname($ _SER)来改变它。

 

参数介绍:

output_callback

可以指定一个可选的output_callback函数。这个函数以字符串作为参数,应该返回一个字符串。当输出缓冲区被刷新(发送)或清理(使用ob_flush()、ob_clean()或类似的函数)或在请求结束时将输出缓冲区刷新到浏览器时,将调用该函数。

当调用output_callback时,它将接收输出缓冲区的内容作为它的参数,并预期将返回一个新的输出缓冲区,结果将被发送到浏览器。如果output_callback不是可调用函数,则此函数将返回FALSE。

string handler ( string $buffer [, int $phase ] )

其中$buffer参数为输出缓冲区的内容。$phrase为位掩码PHP_OUTPUT_HANDLER_ *常量。

如果output_callback返回错误的原始输入,则发送到浏览器。

output_callback参数可以通过传递一个空值来绕过。

ob_end_clean()、ob_end_flush()、ob_clean()、ob_flush()和ob_start()可能不会从回调函数调用。如果从回调函数调用它们,则该行为是未定义的。如果您想要删除缓冲区的内容,则从回调函数返回“”(一个空字符串)。您甚至不能使用从回调函数调用print_r($ expression,true)或highlight_file($ filename)之类的输出缓冲函数调用函数。

ob_start('ob_gzhandler'); //开启缓存压缩

注意:ob_gzhandler()函数的存在是为了方便将gz编码的数据发送到支持压缩web页面的web浏览器。ob_gzhandler()决定浏览器将接受什么样的内容编码,并将相应地返回其输出。

chunk_size

如果通过了可选参数chunk_size,在任何导致缓冲区长度相等或超过chunk_size的输出调用之后,缓冲区将被刷新。默认值0表示输出缓冲区在关闭时才会调用输出函数。

在PHP 5.4.0之前,值1是一个特殊的case值,将块大小设置为4096字节。

flags
flags参数是一个位掩码,它控制可以在输出缓冲区上执行的操作。默认情况下,允许输出缓冲区被清理、刷新和删除,这可以通过PHP_OUTPUT_HANDLER_CLEANABLE | php_output_handler_fluable | php_output_handler_remoable或PHP_OUTPUT_HANDLER_STDFLAGS作为速记来设置。

每个标志控制对一组函数的访问,如下所述:

Constant Functions
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean(), ob_end_clean(), and ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush(), and ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush(), and ob_get_flush().

 

返回值

在成功或失败中返回TRUE。 

PHP ob_start 函数

上一篇:PHPCMS tag无法使用SEO标签和siteurl等函数解决(siteid)
下一篇:CSS自适应宽度DIV的几种实现方法 BFC浮动FLEXBOX都可以