output_buffer函数
首先:echo/print/include进来的html(php中任何可以显示在浏览器的东西!) => php_buffer => tcp_buffer =>browser
所以,输出是先输出到php_buffer,再到tcp_buffer,最后到browser。
php.ini里可以设置output_buffer(php_buffer)开启,output_buffer = 4096,如果设置为0则表示关闭php_buffer。
介绍函数:
1、ob_start():就算不写这个函数,php_buffer也是开启的。只不过写这个有好处:1、可以写回调。2、默认脚本执行完才把php_buffer的东西冲出去。3、无大小限制。所以还是建议写。
2、ob_flush():提醒php_buffer把缓冲区的东西冲出去,冲到tcp_buffer那里,那么php_buffer就没东西了。本来是脚本执行完才冲出去的,现在可以随时冲出去。
3、ob_flush_end():让php_buffer把缓冲区的东西冲出去,并且关闭缓冲区。关闭了缓冲区还是可以echo,为什么?因为直接输入到tcp_buffer那里了。
4、ob_clean():把缓冲区的内容清空。缓冲区的东西清空了,再没有东西冲到tcp_buffer,所以没输出的。
5、ob_clean_end():把缓冲区内容清空,并且把缓冲区关闭。
6、ob_get_contents():把缓冲区的内容拷贝一份到变量那里。静态化页面就靠这里了。
7、ob_get_clean():这个就是ob_get_contents()+ob_end_clean();拷贝到变量,清空,关闭。
8、ob_get_flush():跟ob_get_clean()效果一样。
注意:ob_flush对include进来的html输出不支持。bug?