2.关于ob系列函数:
我想先引用我的好朋友y10k的一个例子:
Example3.
-----------------------------------------------------------------------------------------------------------
比如你用得到
服务器和客户端的设置信息
,但是这个信息会因为客户端的不同而不同
,如果想要保存phpinfo()函数的输出怎么办呢?在没有缓冲区控制之前,可以说一点办法也没有,但是有了缓冲区的控制,我们可以轻松的解决:
-----------------------------------------------------------------------------------------------------------
<?
ob_start();//打开缓冲区
phpinfo();//使用phpinfo函数
$info=ob_get_contents();//得到缓冲区的内容并且赋值给$info
$file=fopen('info.txt','w');//打开文件info.txt
fwrite($file,$info);//写入信息到info.txt
fclose($file);//关闭文件info.txt
?>
-----------------------------------------------------------------------------------------------------------
用以上的方法,就可以把不同用户的phpinfo信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些“过程”转化为“函数”的方法!
-----------------------------------------------------------------------------------------------------------
可能现在大家对ob_start()的功能有了一定的了解,上面的一个例子看似简单,但实际上已经掌握了使用ob_start()的要点
。 <1>.使用ob_start打开browser的cache,这样可以保证cache的内容在你调用flush(),ob_end_flush()(或程序执行完毕)之前不会被输出
。 <2>.现在的你应该知道你所拥有的优势:可以在任何输出内容后面使用header,setcookie以及session,这是ob_start一个很大的特点;也可以使用ob_start的参数,在cache被写入后,然后自动运行命令,比如ob_start("ob_gzhandler");而我们最常用的做法是用ob_get_contents()得到cache中的内容,然后再进行处理……
<3>.当处理完毕后,我们可以使用各种方法输出,flush(),ob_end_flush(),以及等到程序执行完毕后的自动输出。当然,如果你用的是ob_get_contents(),那么就要你自己控制输出方式了。