ob_flush()和flush()和ob_implicit_flush(true)

http://www.jb51.net/article/16215.htm

第一:
“ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。 所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。
正确使用的顺序是:先用ob_flush(),后用flush()。 第二: (当你把php.ini 中output_buffering设为0的时候,连ob_flush()和ob_end_clean()都不需要了) 第三: 请注意ob_implicit_flush(
true),这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。 举例(来自网络): 对于php + nginx 的环境该过程会依次经历:output_buffering, fastcgi_buffer 和 proxy_buffering 。 (注意:CLI 中会强制将php.ini中的output_buffering设置为关闭状态,即无论php的配置文件是开启了缓冲区,还是关闭了缓冲区,
CLI 默认都不会使用output_buffering。除非我们在代码中显示的调用ob_start()来使用该缓冲区。CLI 同时还会强制将implicit_flush设置为开启状态)


fastcgi_buffer是强制打开的,我们无法通过flush()函数强制刷新缓冲区,但把缓冲区填满,等待输出的内容立即发送到客户端的功能还是有效的


proxy_buffering 




 

posted @ 2016-03-31 20:10  诗兄  阅读(2204)  评论(0编辑  收藏  举报