文档介绍:3说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西。举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没冇保存Z前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满或者执行了保存操作,才会将数据写入磁盘。对于PHP来说,每一次像echo这样的输出操作,同样是先写入到了phpbuffer里,在脚本执行完毕或者执行了强制输出缓存操作,数据才会在浏览器上显示。其实对于PHP程序员来说,基本上每个脚本都涉及到了输出缓冲,只是在大多数情况下,我们都不需要对输出缓冲进行更改。而今天就来用实例对PHP输出缓冲控制函数“OutputControl"做一个详细的解析。下而这个例子简单介绍了输出缓冲在一般脚本屮存在的方式:我们在执行如下脚木吋:9■123456<?php/*例l*/echo'';echo'红薯';echo'虫虫';?>脚本在执彳亍完第一个echo时,并不会向浏览器输出相应内容,而是会输出到一个缓冲区,依次类推,当三个echo全部执行完毕(也就是脚木结束)时,才会将缓冲区内容全部输出到浏览器。当然这个缓冲区也冇人小的限制,,这点会在下面的文章中详细介绍。而本章所讲的输皿缓冲控制,就是在脚本结束前,对缓冲区里的内容进行操作。这个例子可以更好的体现输出缓冲控制的应用:在执行如下代码时:9■12345678<?php/*例2*/echo'';sleep(l);echo'p(l);echo'虫虫';?>我们至少需要等待2秒才能看到输出结果,那我们能不能让其实时的显示呢?也就是在第一个echo执行完毕时就输出相应的内容呢,这时候就需要用输出缓冲控制函数来操作缓冲区了,实现代码如下:9■123456789101112131415<?php/*例3*/echostr_padf,,1024);//使缓冲区溢出obstart();//打开缓冲区echo,,;obflushO;//送出当前缓冲内容,不会输出flushO;//输出送出的缓冲内容sleep(1);echo'红薯’;;//送出当前缓冲内容,不会输出flushO;//p(l);echo'虫虫';ob_end_flush();//输出并关闭缓冲?>简单点也可以这样实现:1234567891011<?php/*例4*/echostr_pad('',1024);//使缓冲区溢出echo'';flush();//输出送出的缓冲内容sleep(l);echo'红薯’;flush();//输出送出的缓冲内容sleep(1);echo'虫虫’;?>至于相关函数的用法在下面都会有介绍,这里只是给大家展示一个输出缓冲控制函数的应用,当然了输出缓冲控制函数的作用绝不止这一种,那么下面我们就來看看输出缓冲控制函数都可以应用在哪些方面。作用L在PHP中,像header(),sessionstart(),setcookie()等这样的发送头文件的函数前,不能冇任何的输出,而利用输出缓冲控制函数可以在这些函数前进行输出而不报错。其实这么做没啥必要,非常少见的用法。2•对输出的内容进行处理,例如生成静态缓存文件、进行gzip压缩输出,这算是较常用的功能了,后面会有详细介绍。捕获一些不可获取的函数输出,例如phpinfoO,v