ob_start()函数PHP解释

时间:2015-01-17 20:01:37

标签: php

我不明白这个功能。我阅读了PHP手册但没有得到它。我正在关注一个登录教程,他们在session_start()之前的脚本开头使用了这个函数。什么是内部缓冲区?

1 个答案:

答案 0 :(得分:3)

它将所有输出存储在缓冲区中,直到刷新为止(例如ob_flush())。

它有很多用途。

示例1:如果要为需要查找数据的页面生成HTML,则可以刷新已生成的HTML,然后进行查找。这样,在您进行数据检索时,页面的HTTP传输就开始了。然后,您继续输出页面的其余部分。通常,在<body>标记之后进行刷新的好地方。浏览器会更快地获得第一个字节,如果<head>中包含所有CSS,则浏览器可以构建CSSOM。理想情况下,执行数据检索所需的时间少于将HTML传输到浏览器。这样,数据检索时间对页面加载速度没有影响。
示例2:
如果要编辑图像。输出图像,缓冲区成为图像原始数据。

$image = ob_get_contents(); 

进行编辑。清空输出缓冲区(ob_clean()),然后用更多HTML输出编辑后的图像 示例3:
可以使用回调函数调用ob_start。

当刷新缓冲区时,ob_start调用回调函数,并且函数可以处理输出缓冲区的内容。

ob_start("ob_gzhandler");

ob_gzhandler将gzip输出。当您的服务器未配置为压缩输出时,这尤其方便。某些服务器配置为压缩文件扩展名而不是内容类型。或者,如果服务器未配置为压缩特定MIME内容类型。

如果服务器没有压缩JSON(application / json),你可以使用ob_start(“ob_gzhandler”);

ob_start("ob_gzhandler");
header('Content-Type:application/json; charset=utf-8');

<强> ob_start( 'ob_tidyhandler'); ob_start( 'ob_tidyhandler');将整理你的输出。它会添加缺少的Doctype,<head>关闭标记,等等。