使用php自己的缓存机制
下面的用下面的代码引入
<?php echo 'ob1'; header("Content-type:text/html;charset=utf-8"); echo 'ob2'; echo 'ob3';
就这样一段简单的代码在php5.2以上的版本中是没有错误的,如果是5.2以下的就会出现一个warning的警告错误,这是你需要在php.ini中配置output_buffering,默认是关闭的;如果关闭就会出现上面的错误,这里只要把ob缓存打开就好,开启ob缓存的方法有两种
1.配置php.ini文件output_buffering=4096
2.直接在程序中ob_start();
这样问题解决但是不知道具体啥原因,首先分析一下ob缓存的机制
ob缓存的几个基本原则:
1.如果ob缓存打开,则echo的数据首先放在ob缓存.
2.如果是header信息,就直接放在程序缓存
3. 当页面执行到最后,会把ob缓存的数据,放到程序缓存,然后一次返回给浏览器
如图有具体的说明
假如你没有开启ob缓存,那么程序是是这样执行的
这样的话不符合http请求协议
但是如果开启ob缓存的话
下面是一些关于ob缓存的有关函数
ob_start();//开启缓存
ob_clean();清空ob缓存中的数据
ob_end_clean();清空ob缓存中的数据并且关闭ob缓存
ob_flush();把ob缓存数据,刷新到程序缓存,不关闭ob缓存
ob_end_flush();刷新到程序缓存,同时关闭ob缓存
ob_get_contents();获取ob缓存中的数据
最后给大家分享一段很神奇的代码
<?php echo str_repeat(' ',1024);//注意' '里面是空格 for($i=0;$i<5;$i++){ echo $i; flush();//把程序缓存的数据,强制刷新到浏览的缓存里面 sleep(1);//休眠1秒,在sleep这个过程中http连接没有断 }