您的位置:首页 > 产品设计 > UI/UE

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

2016-03-31 20:10 417 查看
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


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: