PHP逐行输出(ob_flush与flush的组合)


Posted in PHP onFebruary 04, 2012

ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑…
其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情..
ob_*系列函数, 是操作PHP本身的输出缓冲区.
所以, ob_flush是刷新PHP自身的缓冲区.
而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.
在apache module的sapi下, flush会通过调用sapi_module的flush成员函数指针, 间接的调用apache的api: ap_rflush刷新apache的输出缓冲区, 当然手册中也说了, 有一些apache的其他模块, 可能会改变这个动作的结果..
有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。
甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到 </table> 标记之前,不会显示出整个表格。
一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。
所以, 正确使用俩者的顺序是. 先ob_flush, 然后flush,
当然, 在其他sapi下, 不调用flush也可以, 只不过为了保证你代码的可移植性, 建议配套使用.
在IE 中,必须先输出256个字节,才起作用,如下代码:

function execte(){ 
echo str_pad(" ", 256); 
for ($i=1;$i<10;$i++){ 
echo $i."<Br>"; 
ob_flush(); 
flush(); 
sleep(1); 
} 
}
PHP 相关文章推荐
php笔记之:文章中图片处理的使用
Apr 26 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
ThinkPHP路由详解
Jul 27 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 #PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 #PHP
PHP的博客ping服务代码
Feb 04 #PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 #PHP
PHP常用技巧总结(附函数代码)
Feb 04 #PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 #PHP
php中global和$GLOBALS[]的分析之一
Feb 02 #PHP
You might like
PHP文件上传主要代码讲解
2013/09/30 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
python 反向输出字符串的方法
2018/07/16 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Python包和模块的分发详细介绍
2020/06/19 Python
为什么相对PHP黑python的更少
2020/06/21 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
phpquery中文手册
2021/03/18 PHP
德购商城:德国进口直邮商城
2017/06/13 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
大学生自荐书范文
2013/12/10 职场文书
前处理组长岗位职责
2014/03/01 职场文书
文明演讲稿范文
2014/05/12 职场文书
冬季施工防火方案
2014/05/17 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
初中班主任工作随笔
2015/08/15 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
JavaScript canvas实现流星特效
2021/05/20 Javascript
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技