好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php ob_start()函数实现当前页面内容缓存输出 - ph

php ob_start()函数实现当前页面内容缓存输出

页面缓存就是把页面保存到一个文件中,下次读出时直接调用文件而不查询数据库,这里我们介绍利用ob_start()来实现.

例,代码如下:

<?php   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    //或直接用 file_put_content('info.txt',$info);    ?> 

以上的方法,可以把不同用户的phpinfo信息保存下来,这里我们可以着重看看这个方法的使用技巧,用这个方法可以实现生成静态页面的便利.

并且用这个方法比用file_get_conents()的方法更合理更有效率,简单的说个应用吧,比如想要把phpinfo()的内容写入文件,可以这样做:

ob_start();  $phpinfo  = phpinfo();  //写入文件   ob_end_flush();  或者还有这样的用途:  ob_start();  //打开缓冲区   echo   "Hellon" ;  //输出   header( "location:index.php" );  //把浏览器重定向到index.php   ob_end_flush(); //输出全部内容到浏览器  

header()会发送一段文件头给浏览器,但是如果在header()之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会报错,但是如果输出在ob_start()和ob_end_flush()之间,就会没有问题,因为在输出前打开了缓冲区,echo后面的字符就不会输出到浏览器,而是保留在服务器,知道使用flush才会输出,所以header()会正常执行.

当然,ob_start()还可以有参数,参数就是一个回调函数,例子如下:

<? php  function  callback( $buffer )  {     // replace all the apples with oranges      return  ( str_replace ( "apples" ,  "oranges" ,  $buffer ));  }  ob_start( "callback" );  ?>  <html>  <body>  <P>It's like comparing apples to oranges.</P>  </ body >  </ html >  <?php  ob_end_flush();  ?>  以上程序会输出:  <html >  <body>  <p>It's like comparing oranges to oranges.</ p>  </ body>  </ html> 

查看更多关于php ob_start()函数实现当前页面内容缓存输出 - ph的详细内容...

  阅读:35次