1.ob缓存运行方式
2.注意
在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给浏览器,如果,你使用ob_clean()类似的函数,会情况缓存中的内容,那么就不用有数据发送给浏览器
- ob_start() 开启
- ob_get_contents() 获取缓存中的数据
- ob_clean() 清空缓存中的数据
- ob_end() 关闭ob缓存
- ob_end_clean() 清空缓存并关闭ob缓存
- ob_flush() 刷新缓冲区【就是把ob缓存中的内容放到程序缓存中,缓存中内容就是空了,默认是在程序执行完后再放到程序缓存中,用此函数可以在程序执行时任意时候放到程序缓存中】
- flush() 把程序缓存内容推送到浏览器【一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。】
说的简单点:默认情况下,php会把输出的内容放到【程序缓存】中,待程序跑完,把【程序缓存】中的东西全部抛到浏览器中;现在使用ob缓存,开启后,所有的输出都会放到【ob缓存】中,头信息(header)等这些依旧存放到【程序缓存】中,待程序跑完,【ob缓存】中的内容会被放到【程序缓存】内容后面,再送到浏览器。ob_flush()是把【ob缓存】中的内容放到【程序缓存】中,之前只有待程序跑完才会把【ob缓存】内容放到【程序缓存】中,现在用ob_flush()就可以在任意时候送到【程序缓存】中;flush()函数的作用是把【程序缓存】中的数据抛到浏览器中;
总结
ob_flush()把ob缓存中的内容放到程序缓存
flush()是把程序缓存中的内容送到浏览器缓存中
有趣的代码:利用flush()动态输出数字
应用:类似信息的推送
1 2 3 4 5 6 7 |
for ($i=10; $i>0; $i--){ echo str_repeat(" ",4096);//php.ini output_buffering默认是4069字符或者更大,即输出内容必须达到4069字符服务器才会flush刷新输出缓冲 echo $i; flush(); //将释放出来的数据发送到浏览器 sleep(1); } |