网站地图    收藏   

主页 > php专栏 > php函数大全 >

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

来源:自学PHP网    时间:2014-11-25 00:26 作者: 阅读:

[导读] 页面缓存就是把页面保存到一个文件中,下次读出时直接调用文件而不查询数据库,这里我们介绍利用ob_start()来实现 例,代码如下:?phpob_start(); 打开缓冲区phpinfo(); 使用phpinfo函数$info=ob_ge...

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

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

例,代码如下:

  1. <?php  
  2. ob_start(); //打开缓冲区  
  3. phpinfo(); //使用phpinfo函数  
  4. $info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info  
  5. $file=fopen(’info.txt’,’w’); //打开文件info.txt  
  6. fwrite($file,$info); //写入信息到info.txt  
  7. fclose($file); //关闭文件info.txt  
  8. //或直接用 file_put_content('info.txt',$info);  
  9. ?> 

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

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

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

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

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

  1. <? php 
  2. function callback($buffer
  3.   // replace all the apples with oranges 
  4.   return (str_replace("apples""oranges"$buffer)); 
  5. ob_start("callback"); 
  6. ?> 
  7. <html> 
  8. <body> 
  9. <P>It's like comparing apples to oranges.</P> 
  10. </ body > 
  11. </ html > 
  12. <?php 
  13. ob_end_flush(); 
  14. ?> 
  15. 以上程序会输出: 
  16. <html > 
  17. <body> 
  18. <p>It's like comparing oranges to oranges.</ p> 
  19. </ body> 
  20. </ html> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论