当前位置:首页 > 编程技术 > PHP编程 > 正文内容

PHP中刷新输出缓冲

曾经3个月前 (05-07)PHP编程2279

PHP中刷新输出缓冲
buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。

      同样的道理,在PHP中,当执行echo,print的时候,输出并没有立即通过tcp传给客户端浏览器显示, 而是将数据写入php buffer。php output_buffering机制,意味在tcp buffer之前,建立了一新的队列,数据必须经过该队列。当一个php buffer写满的时候,脚本进程会将php buffer中的输出数据交给系统内核交由tcp传给浏览器显示。所以,数据会依次写到这几个地方echo/pring -> php buffer -> tcp buffer -> browser


在PHP中与刷新缓冲相关的函数有三个:

1). flush
刷新PHP程序的缓冲,而不论PHP执行在何种情况下。该函数将当前为止程序的所有输出发送到用户的浏览器。 但是该函数不会对服务器或客户端浏览器的缓存模式产生任何影响,也不会对PHP本身的缓存产生任何影响。

2).ob_flush

该函数对PHP本身的的缓存进行输出。PHP本身的缓存受php.ini中的output_buffering的控制。ob_flush()的作用就是将本来存在输出缓存中的内容取出来,设置为等待输出状态,但不会直接发送到客户端,这时你就需要先使用ob_flush()再使用flush(),客户端才能立即获得脚本的输出。

    与PHP本身输出缓冲相关的两个PHP配置是:
      参数1:output_buffering :on/off 或 者整数 。设置为on时,将在所有脚本中使用输出缓存控制,不限制缓存的大小。而设置为整数时,如output_buffering=4096,当缓存数 据达到4096字节时会自动输出刷新缓存。而这个参数的不同正是导致以上代码在不同时候执行结果不同的原因。当output_buffering关闭时, 脚本所有的输出(echo)都会即时发送到客户端,执行上面代码时就是每秒输出一个数字。而开启output_buffering后,输出内容就会先缓存 在服务端,直到脚本结束时才一起发送给客户端。
     参数2:implicit_flush:on/off。设定ON意味着,当脚本有输出时,自动立即发送到客户端。相当于在echo后自动加flush()。


3).ob_implicit_flush

这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。

以下是举例:

  1. <?php  

  2. ob_end_clean();  

  3. echo str_pad("256);  

  4. for ($i=100; $i>0; $i--)  

  5.    echo $i, '<br/>' 

  6.    flush();  

  7.    sleep(1);   

  8.   

  9. ?>  

以上代码应该隔一秒钟输出一次$i.  以上echo str_pad(" ", 256)的目的是IE需要接受到256个字节之后才开始显示。 以上代码还有以下两种写法。

  1. <?php  

  2. echo str_pad("256);  

  3. for ($i=100; $i>0; $i--)  

  4.    echo $i'<br />' 

  5.    ob_flush();  

  6.    flush();  

  7.    sleep(1);   

  8.   

  9. ?>  


  1. <?php  

  2. ob_implicit_flush(true);  

  3. echo str_pad("256);  

  4. for ($i=100; $i>0; $i--)  

  5.    echo $i'<br />' 

  6.    ob_flush();  

  7.    sleep(1);   

  8.   

  9. ?>  


另外我们还需要注意刷新缓冲不光受以上几方面的影响,还受以下影响:

1). 个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函 数产生的结果不会立即被发送到客户端浏览器。甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到 </table> 标记之前,不会显示出整个表格。一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。

2). PHP安装模式的影响。以上方式对于PHP以Apache模块方式安装的情况,可以直接使用。  如果以FastCgi方式还需要注意以下几下配置:

    a). Apache+Fcgid+PHP
        FcgidOutputBufferSize 0(默认是65536)

        在配置Fcgid时, 设置这项值为0, 以上代码做刷新缓冲时,才能达到自己想要的效果。

    b).IIS+FastCgi+PHP

        ResponseBufferLimit=0

        修改WINDOWS\system32\inetsrv\fcgiext.ini下的这一项。

    c).nginx+php-fpm

        fastcgi_buffer_size 4k;

        fastcgi_buffers 8 4k;
        fastcgi_busy_buffers_size 4k
        gzip off;



PHP函数说明:
1.string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
该函数返回 input 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度

2.相关flush类似函数如下


扫描二维码推送至手机访问。

版权声明:本文由珍惜发布,如需转载请注明出处。

本文链接:https://www.zp68.com/article/61.html

分享给朋友:

“PHP中刷新输出缓冲” 的相关文章

PHP多数组组合-颜色尺码大小

抽象一下需求:在构建某个对象时,它拥有多个属性,每个属性拥有多个可选的值,需要穷举出每个属性不同的选择组合构建出的不同对象,比如:输入参数:$arr = [     'Name' => ['...

php实现边执行边输出的效果

客户端的请求到web服务器,web服务器再调用PHP代码;PHP返回内容到web服务器,web服务器再返回给客户端边执行边输出就需要web服务器和PHP都不缓存内容首先, Nginx不缓存PHP返回的内容header('X-Accel-Buffering: no'...

最详细的PHP flush()与ob_flush()的区别详解

buffer ---- flush()buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一...

php 使用curl_multi_init批量请求

抓取多个URL地址是Web开发中常见的需求,使用PHP的curl库可以简化这个过程。本文将详细介绍如何使用PHP的curl库同时请求多个URL地址,并提供具体的代码案例和注释。curl库介绍curl是一个常用的开源网络传输工具,可以通过各种协议(如HTTP、FTP、TELNET)在不同的平台上进行数...

PHP 多线程 curl_multi_init 的使用 PK curl_init 看看那个更快

php中可以通过CURL处理HTTP请求,其中curl_init()是单线程模式,如果需要对事务处理走多线程模式,那么就需要用到curl_multi_init()函数。本案例用来测试大并发的情况下 curl_multi_init() 到底比 curl_init() 快多少。话不多少,直接上...

评论列表

游客
2周前 (07-11)

楼主很有经验啊!http://905.fulihua0415.com

游客
2周前 (07-11)

我和我的小伙伴都惊呆了!http://by1n.sc-mty.cn

游客
2周前 (07-11)

这一年啥事没干,光研究楼主的帖子了!http://s00ku.sc-mty.cn

游客
2周前 (07-11)

灌水不是我的目的!http://o0anae.sy-cl.com

游客
2周前 (07-11)

信楼主,考试不挂科!http://3esf.sy-cl.com

游客
2周前 (07-11)

你觉得该怎么做呢?http://8zc6y.lkjk.cn

游客
2周前 (07-11)

小弟默默的路过贵宝地~~~http://kafj44.sc-mty.cn

游客
2周前 (07-11)

楼主是好人!http://20k4w1.zhoutan.net

游客
2周前 (07-11)

鉴定完毕!http://dut.zhoutan.net

游客
2周前 (07-11)

这么经典的话只有楼主能想到!http://sul2u.lkjk.cn

游客
2周前 (07-11)

今天的心情很不错啊http://30khdj.zhoutan.net

游客
2周前 (07-11)

今天是个特别的日子,值得纪念!http://49wue1.zhoutan.net

游客
2周前 (07-11)

文章论点明确,论据充分,说服力强。http://q29.tuopi120.com

游客
2周前 (07-11)

楼上的很有激情啊!http://k17.wpcuntao.com

游客
2周前 (07-11)

无图无真相!http://www.gxmlm.com

游客
2周前 (07-11)

视死如归的架势啊!http://jsl7d.hooby.cn

游客
2周前 (07-11)

怎么我回帖都没人理我呢?http://dg2m0.nbqywh.com

游客
2周前 (07-11)

看帖回帖一条路!http://02pzao.nbqywh.com

游客
2周前 (07-11)

这么好的帖子,应该加精华!http://0sas4u.ymyzncp.com

游客
2周前 (07-11)

太邪乎了吧?http://coyl6r.ymyzncp.com

游客
2周前 (07-11)

收藏了,以后可能会用到!http://vbjpf.gdlydzkj.cn

游客
2周前 (07-11)

太高深了,理解力不够用了!http://9ttyu.pingbanzhamen.com/33/4.html

游客
2周前 (07-12)

鉴定完毕!http://68z4e.schhzsjt.com

游客
2周前 (07-12)

怎么我回帖都没人理我呢?http://fjn84.lkjk.cn

游客
2周前 (07-12)

楼主的帖子实在是写得太好了。文笔流畅,修辞得体!http://ywgr.sc-mty.cn

游客
2周前 (07-12)

网站做得不错http://ca9n1.ekor-metal.com/4/3.html

游客
2周前 (07-12)

好东西,赞一个!http://kc7g.sy-cl.com

游客
2周前 (07-12)

楼主的文笔不错!http://kdiocy.sy-cl.com

游客
2周前 (07-12)

怪事年年有,今年特别多!http://154k9.xmyw.net

游客
2周前 (07-12)

我只看看不说话。。。http://8lxehl.xmyw.net

游客
2周前 (07-12)

强,我和我的小伙伴们都惊呆了!http://k81.jxkspx.com

游客
2周前 (07-12)

每天顶顶贴,一身轻松啊!http://dy9b.xincms.net

游客
2周前 (07-12)

收藏了,以后可能会用到!http://29g4a.lyshuidai.com/w/5.html

游客
2周前 (07-12)

楼主最近很消极啊!http://v8x16i.fsxjlw.com

游客
2周前 (07-12)

楼主的帖子实在是写得太好了。文笔流畅,修辞得体!http://ubfz.ads898.com

游客
2周前 (07-12)

突然觉得楼主说的很有道理,赞一个!http://z64c.ads898.com

游客
2周前 (07-12)

雷锋做好事不留名,都写在帖子里!http://yzv.whjttm.cn

游客
2周前 (07-12)

这里的资源非常丰富,帮助我解决了很多问题。http://2wjs.gzcyoooooo.net

游客
2周前 (07-12)

楼主好聪明啊!http://bgb.gzcyoooooo.net

游客
2周前 (07-12)

缺乏激情了!http://jysjm.gzcyoooooo.net

游客
2周前 (07-12)

十分赞同楼主!http://372yh.cityxz.cn

游客
2周前 (07-12)

楼主内心很强大!http://sjo.1317gdql.com

游客
2周前 (07-12)

楼主是好人!http://yqzv6.lkjk.cn

游客
2周前 (07-12)

楼主是男的还是女的?http://xiw0c.253fe.com

游客
2周前 (07-12)

内容很有深度!http://bwgk0.wnqyhc.com/2/3.html

游客
2周前 (07-12)

太邪乎了吧?http://no27u.lkjk.cn

游客
2周前 (07-12)

态度决定一切,不错!http://p3g.baoyu1326.com

游客
2周前 (07-12)

知识就是力量啊!http://q32nm.szhwz.com/01/3.html

游客
2周前 (07-12)

无图无真相!http://pygob.zhengshanwang.cn

游客
2周前 (07-12)

突然觉得楼主说的很有道理,赞一个!http://7yi9o.lkjk.cn

游客
2周前 (07-12)

不错哦,楼主这是要火的节奏啊!http://b45l4n.21es.cn

游客
2周前 (07-12)

哥回复的不是帖子,是寂寞!http://gnqk.cn/news/19a399620.html

游客
2周前 (07-12)

经典,收藏了!http://99kang.cn/news/14f399625.html

游客
2周前 (07-12)

楼上的别说的那么悲观好吧!http://3szhp.lkjk.cn

游客
2周前 (07-12)

楼主发几张靓照啊!http://longkangys.com.cn/news/8a399631.html

游客
2周前 (07-12)

楼主是一个典型的文艺青年啊!http://onlineimagehost.com/news/93e099456.html

游客
2周前 (07-12)

楼主发几张靓照啊!http://e1hy6.9agou.com/6/4.html

游客
2周前 (07-12)

宇宙第一贴诞生了!http://b0wu.21es.cn

游客
2周前 (07-13)

这里的资源非常丰富,帮助我解决了很多问题。http://01sxr.gljwxkjxc.com/01/4.html

游客
2周前 (07-13)

精华帖的节奏啊!http://i5acaa.5678186.com

游客
2周前 (07-13)

终于看完了,很不错!http://9ky.lkjk.cn

游客
2周前 (07-13)

在哪里跌倒,就在那里多爬一会儿!http://07nz.lkjk.cn

游客
2周前 (07-13)

白富美?高富帅?http://sum5nv.lkjk.cn

游客
2周前 (07-13)

小弟默默的路过贵宝地~~~http://h7gpt.7ylmud.com/M/3.html

游客
2周前 (07-13)

楼主是我最崇拜的人!http://d9wo1.lkjk.cn

游客
2周前 (07-13)

缺乏激情了!http://z8bc.lkjk.cn

安福相册
2周前 (07-13)

安福相册官网 https://www.anfu0594.com

游客
2周前 (07-13)

看在楼主的面子上,认真回帖!http://n2p.fangzhengrc.com

游客
2周前 (07-13)

祖国尚未统一,我却天天灌水,好内疚!http://gdzvz.com/news/51d099498.html

游客
2周前 (07-13)

东方不败还是灭绝师太啊?http://99kang.cn/news/06b399633.html

安福相册
2周前 (07-13)

安福相册精准查找 https://www.anfu0594.com

游客
2周前 (07-13)

帖子很有深度!http://h4wo.gzjpsy.com

安福相册
2周前 (07-13)

莆田鞋 https://www.anfu0594.com

游客
2周前 (07-13)

顶一个!http://www.kdhlpt.com/yaowen/987810068.html

游客
2周前 (07-13)

大神好强大!http://www.kdhlpt.com/yaowen/779337493.html

游客
2周前 (07-13)

论坛的人气越来越旺了!http://d7qem.yiyh8.com/3/3.html

游客
2周前 (07-13)

论坛的人气越来越旺了!http://hqti.ynport.net/test/079765788.html

游客
2周前 (07-13)

网页的加载速度非常快,不会影响用户体验。http://xeej.ynport.net/test/594959653.html

游客
2周前 (07-13)

无图无真相!http://olnp.ynport.net/test/763246118.html

游客
2周前 (07-13)

我只是来赚积分的!http://4ggwx.321043.com/i/3.html

游客
2周前 (07-13)

吹牛的人越来越多了!http://abzj.ynport.net/test/159132019.html

游客
2周前 (07-13)

大神好强大!http://wjaq.ynport.net/test/528610007.html

游客
2周前 (07-13)

文章写太挺好了,真的值得推荐http://pffx.ynport.net/test/981152291.html

游客
2周前 (07-13)

有钱、有房、有车,人人都想!http://eamz.ynport.net/test/640008559.html

游客
2周前 (07-13)

勤奋灌水,天天向上!http://stiq.ynport.net/test/467730890.html

游客
2周前 (07-13)

帖子很有深度!http://chti.ynport.net/test/568355892.html

游客
2周前 (07-13)

楼主的头像是本人吗?http://psqg.ynport.net/test/823362513.html

安福相册
2周前 (07-13)

微商货源网 https://www.anfu0594.com

游客
2周前 (07-13)

信楼主,得永生!http://qhph.ynport.net/test/261267201.html

游客
2周前 (07-13)

我只是来赚积分的!http://kgtm.ynport.net/test/908663389.html

游客
2周前 (07-13)

顶顶更健康!http://nozj.ynport.net/test/122728412.html

游客
2周前 (07-13)

支持一个http://cbni.ynport.net/test/889150896.html

游客
2周前 (07-13)

感觉不错!http://ecuw.ynport.net/test/966764428.html

游客
2周前 (07-13)

关注一下!http://n7p.lkjk.cn

游客
2周前 (07-13)

缺乏激情了!http://kpdr.ynport.net/test/195768782.html

游客
2周前 (07-13)

楼主人气很旺!http://gghx.ynport.net/test/447421134.html

游客
2周前 (07-13)

缺乏激情了!http://cwop.ynport.net/test/862351808.html

游客
2周前 (07-13)

楼主的文笔不错!http://cosg.ynport.net/test/846658658.html

安福相册
2周前 (07-13)

安福货源网 https://www.anfu0594.com

游客
2周前 (07-13)

很多天不上线,一上线就看到这么给力的帖子!http://rpgz.ynport.net/test/563715907.html

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。