PHP缓冲区使用摘要

PHP缓冲区使用摘要
本文的示例总结了PHP缓冲区的用法:

让我们先看一段代码。
< PHP
(0美元= 10美元;
{
回声$ i;
同花顺();
睡眠(1);
}
>

根据PHP手册,

函数将当前程序的所有输出发送到用户浏览器。

上面的代码应该每隔二美元出口,但是事实上,这是不一定的情况下,可以等待10秒后,所有的输出是在相同的时间。

好,让我们改变这个代码并把它改为
< PHP
(ob_end_clean); / /修改部分
(0美元= 10美元;
{
回声$ i;
同花顺();
睡眠(1);
}
>

嘿,这个ob_end_clean();它是好的。事实上,我们改变ob_end_clean()()()为ob_end_flush以及好。

我再换一次。
< PHP
(0美元= 10美元;
{
回声$ i;
(ob_flush); / /修改部分
同花顺();
睡眠(1);
}
>

运行,你发现我也输出一秒一次吗为什么会这样

别担心,让我们来看看在php.ini。

对于output_buffering打开php.ini文件搜索,我们会看到这样的设置output_buffering = 4096。正如其名,output_buffering,此设置的功能是缓冲输出,和缓冲区的大小是4096bytes。

在我们的第一个代码,没有预期的输出,因为output_buffering有缓冲的输出。输出将不会发出无4096bytes或剧本的结束。

ob_end_clean的作用()()和()ob_end_flush第二段代码终止缓冲。这不会要等到4096bytes缓冲发送出去。

在第三段,一ob_flush()使用。它的功能是发送缓冲数据,但它不会终止缓冲区,因此必须在每次刷新()之前使用它。

如果你不想使用ob_end_clean()(),()和ob_end_flush ob_flush(),我们必须在php.ini设置output_buffering足够小,例如,设置为0。值得注意的是,如果你打算在脚本中使用ini_set(output_buffering 因为在这脚本,开始缓冲设置加载和缓冲区的开始。

也许你会问,既然ob_flush()是发送缓冲区的数据,你需要使用下面的代码直接冲洗()
< PHP
(0美元= 10美元;
{
回声$ i;
ob_flush();
睡眠(1);
}
>

请注意ob_flush之间的差异()和冲洗()。前者是从PHP缓存数据的发布,将不在缓冲区的数据或发布到浏览器。所以当缓冲区的存在,我们必须使用ob_flush()和()在同一时间冲洗。

这是不可缺少的吗不,我们有一个办法让它立即发送到浏览器时,有一个数据输出。以下两段代码不需要使用同花顺()。(当你设定output_buffering 0,甚至ob_flush ob_end_clean()和()不需要)
< PHP
ob_implicit_flush(真的);
(0美元= 10美元;
{
回声$ i;
(ob_flush)#;如果打开箱子的OB功能
睡眠(1);
}
>
< PHP
ob_end_clean();
ob_implicit_flush(真的);
(0美元= 10美元;
{
回声$ i;
睡眠(1);
}
>

看ob_implicit_flush(真正的)以上,使输出被发送到浏览器,每当有输出。这并不需要被发送到与刷新浏览器()之后的每一个输出(回声)。

上述投诉可能无法在某些浏览器,因为浏览器有自己的规则。我用firefox1.5,IE6,opera8.5来测试,其中歌剧不能正常输出因为它有一个规则,它是绝对不会输出除非一个HTML标签时除非脚本完成,Firefox和IE。更多的是正常的。

最后,一个非常有趣的一段代码是附属于作者puttyshell。脚本中的周期,每个输出将覆盖以前的输出。

下面的代码仅在Firefox,和其他的浏览器不支持多部分/ x-mixed-replace的内容类型
< PHP
头('content-type:多部分/ x-mixed-replace;边界= endofsection);
打印——endofsection ;
元=数组()
($ i = 0;$ i < 10;$ + +){
睡眠(1);
打印内容类型:文本
打印部分美元,$ 4;
打印-- endofsection ;
ob_flush();
同花顺();
}
打印内容类型:文本;
打印结束;
打印-- endofsection -- ;
>

更多对PHP相关内容感兴趣的读者可以看到本网站的主题:PHP基本语法教程

希望本文能对PHP程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部