php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)
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 标记的开头之前缓存内容,并且在接受到 标记之前,不会显示出整个表格。
一些版本的 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."
";
ob_flush();
flush();
sleep(1);
}
}
自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com
本文链接地址: PHP逐行输出(ob_flush与flush的组合) http://www.chhua.com/web-note2670
相关笔记
更多
php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)相关推荐
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...
我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时 ...
- 深入理解ob_flush和flush的区别(转)
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑- 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_* ...
- 深入理解PHP中的ob_flush和flush的区别
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑- 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情- ob_*系 ...
- PHP的ob_flush()与flush()区别
说明:纯属个人实践中的理解以及一些总结,理解有误或有疑问之处,请告知,共同进步. 一.首先说一下buffer. buffer是指内存地址空间. 1.Linux系统默认大小一般为4096(4kb). 其 ...
- php ob_flush 和flush
"ob_flush()和flush()的区别.前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器.所以当缓冲存在的时候,我们必须ob_flush( ...
- php的ob_flush和flush(转)
php.ini中 output_buffering = off 关闭php的缓存 implicit_flush = Off php不会立即输出到浏览器.如果是ON,相当于每次ECHO 立刻执行一个FL ...
- 逐行计算、逐行递延、逐行更新
-- 逐行计算.逐行递延.逐行更新 declare @tb table (工号 int, 姓名 nvarchar(10), 数量 int, 基数 int, 开始号 int, 终止号 int) in ...
- matlab中怎么使用disp函数显示一句话同时输出变量值呢?
今天在写matlab程序的时候,发现之前matlab输入input和输出output函数的使用有点遗忘,于是决定记录下来这些零碎的知识点. 那么disp如何显示一句话同时输出变量值呢? 参考的disp ...
- 手机内部充电电流控制原理图(如果手机支持快充,比如支持9V快充,则通过充电接口的D+、D-二根线,输出对应的高低电平组合,FP6601就会控制它的3脚接地,4脚悬空,此时R3与R2并联,改变反馈下拉)
手机内部充电电流控制原理图 来源:电工之家•作者:电工之家• 2019-12-08 10:48 • 7365次阅读 0 手机充电器电流控制方面: 现在的手机充电器,无一例外,都使用了隔离式开关电源电路 ...
最新文章
- Linux笔记:使用Vim编辑器
- 【OpenCV 4开发详解】图像连接
- LeetCode 152. Maximum Product Subarray--动态规划--C++,Python解法
- poj 3660 Cow Contest
- 漫 谈oracle 中 的 空 值
- 在Linux 上安装WAS7.0
- 同步屏障CyclicBarrier
- hypermesh 复合材料_【技术邻】HyperMesh复合材料建模——坐标系调整
- python之setdefault()和defaultdict()处理缺失值的键
- FLASK安装--兼收EZ_INSTALL及PIP
- 误Ghost数据恢复图文教程
- MakeApie 将于 2月15号开始暂停服务
- 存储和多屏互动,蜂鸟网的NAS应用解析
- LZJ的python第6次打卡
- C#贪吃蛇小游戏 毕业设计用
- 免费在线汉字简体繁体转换工具
- Android-Application被回收引发空指针异常分析(消灭全局变量)
- android 自定义按钮边角有阴影,Android CardView使用elevation设置阴影去掉边角背景解决办法 | 夕辞...
- return int()函数 c++解说
- PTA 7-5 字符串的连接
热门文章
- Idea设置多开窗口
- cygwin-1.7 离线安装包_.NET Framework所有版本微软官方下载地址
- java行转列_最近面试 Java 后端开发的感受!
- 模型描述的关系模式_框架篇:见识一下linux高性能网络IO+Reactor模型
- wap base.inc.php,MetInfo database.inc.php配置
- oracle adg 人工干预,Oracle DataGuard
- OpenShift 4 - 使用Prometheus监控Node节点
- OpenShift 4 之Service Mesh教程(6)- 根据Header路由请求
- .net core精彩实例分享 -- 泛型和集合
- linux主设备号作用是什么,linux 主设备号为1 以及/dev/null的介绍