ob_flush();
flush();
结合官方文档和干系资料,ob_flush是发送用户(程序员)自定义的缓冲内的内容数据,而flush则是发送php自身的缓冲区的内容数据。这该当是最主要最大的差异了。不管你知道不知道,把稳没把稳,你可能在代码中调用了多次ob_start函数,实在这已经创建了多个输出缓冲区,这些缓冲区构成了一个缓冲区堆栈,最新创建的缓冲区便是当前缓冲区。每调用一次ob_flush就会将当前缓冲区的内容输出到上一层缓冲区,依次类推。末了才回到php缓冲区。以是上面的代码说要按顺序来调用,不然可能涌现意想不到的结果。你可以大略理解成ob_flush 将缓冲内容发送到flush,而flush将缓冲内容发给客户端(浏览器),只管实际上情形可能要比这繁芜多了。
此外,ob_flush还受到php的配置选项output_buffering(默认是4069字符)的影响,如果缓冲区的内容没达到这个阀值,调用了ob_flush也没浸染。而flush则不受此限定。其余这两个函数都不能影响到客户端浏览器的缓存,也不能影响到web做事器自身的缓存机制。
以上如有谬误,欢迎示正!