关于
ob_start
的作用在此不做过多描述,网上很多。
请看下面的小程序
(
在看之前,说明一下,在
php.ini
中设置
output_buffering=on)
<?php
ob_start();
echo str_repeat(' ', 1000); //Chrome和FF缓存1000Bytes,这里用来先将浏览器缓存用掉,但是很疑惑这一行输出为什么没有被output_buffering存起来,而是直接输出了
for ($i = 0; $i < 5; $i++) {
echo $i . '<br />';
ob_flush();
flush();
sleep(1);
}
?>
如果对
ob_start
很熟悉的话,应该会判断出结果:直接输出了
0
、
1
、
2
、
3
、
4
;有人很奇怪为什么会出现这个情况,而不是
sleep 1s
后输出一个。这个暂不解释,在看一下下面这个程序:
<?php
ob_start();
echo str_repeat(' ', 1000); //Chrome和FF缓存1000Bytes,这里用来先将浏览器缓存用掉,但是很疑惑这一行输出为什么没有被output_buffering存起来,而是直接输出了
for ($i = 0; $i < 5; $i++) {
echo $i . '<br />';
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
for ($i = 0; $i < 5; $i++) {
echo $i . '<br />';
ob_flush();
flush();
sleep(1);
}
?>
结果是先输出了
0
、
1
、
2
、
3
、
4
然后每
sleep 1s
输出一个数字。
因为,
ob_start
函数是有堆叠性的,也就是说,
ob_start
一般要和
ob_end_flush
配合使用。
先说一下第一个程序,在
php
配置文件内已经开启了
output_buffering
暂且编号
1
,在程序中又因为
ob_start
的原因开启了另一缓冲区暂且编号
2
(请明白是缓冲区
buffering
,而不是
cache
),因为
ob_flush
是刷新
php
缓冲区,而不是关闭,所以,每
sleep
1s
只是刷新了缓冲区
2
,所以会等待输出结束或者超过
buffering
的值时才会输出。而第
2
个程序因为关闭了一个
cache
所以先输出了
0
、
1
、
2
、
3
、
4
然后每
sleep 1s
输出一个数字。
这个算是迎接
2013
的第一篇博客,以后会多多经营,请码友们多指教。
分享到:
相关推荐
ob_start()使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。然后用ob_get_contents得到缓冲区的数据。ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中...
我想将PHP脚本中输出的东西收集在一起,于是使用了ob_start和ob_end_flush这两个函数,确实有达到收集输出内容的作用,但同时也将这些打印到了控制台界面中。我想问的是有没有办法,阻止PHP像控制台输出信息。该软件...
下面的代码是一个压缩网页的例子,我们利用ob_gzip函数,使用ob_start将输出内容压缩后放到“缓冲区”后再输出 。 PHP代码 //启用压缩 if(function_exists('ob_gzip')) { ob_start('ob_gzip'); } //准备一些待压缩...
ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有”Header had all ready send by”的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区...
有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信 息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间...
输出前使用尽量使用 ob_start();可以加快输出速度,适用NT 对unix类服务器 如果使用ob_start(‘ob_gzhandler’);输出效率将更高
转载个PHP生成静态页面学习的资料,希望对学习PHP生成静态页面的朋友有帮助。
在开始之前还是提一下三个函数吧:”ob_start()、ob_end_clean()、ob_get_contents()” ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里; ob_get_contents():是读出缓冲区里的内容,下面...
用PHP的ob_start(); 控制您的浏览器cache Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 ...
PHP用法ob_start生成html页面的方法_.docx
下面小编就为大家分享一篇php利用ob_start()清除输出和选择性输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了php缓冲 output_buffering和ob_start的相关资料,需要的朋友可以参考下
主要介绍了php使用ob_start()实现图片存入变量的方法,是对缓存的灵活运用,具有既定的参考借鉴价值,需要的朋友可以参考下
ob_start(); //打开缓冲区 echo “Hello\n”; //输出 header(“location:index.php”); //把浏览器重定向到index.php ob_end_flush();//输出全部内容到浏览器 ?> 所有对header()函数有了解的人都知道,这个函数
【转载】原文地址:http://www.itbbs.cn/index.php?showtopic=1074 Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后...php ob_start(); //打开缓冲区 ech