posts - 111,  comments - 37,  trackbacks - 0
缓存PHP页面包含两个文件,一个文件“test.php”,用来测试缓存,一个页面是“CachePage”,用一个类提供缓存的方法和设置缓存的时间。
注意,使用本技巧,必须先在当前目录下创建一个"cache"文件夹,用来保存缓存文件。
test.php内容如下所示。
<html>
<body>
<?
include('CachePage.php');                 //要使用缓存文件,必须加载缓存文件CachePage.php
$cache = new CachePage('cache',5,'txt');  //调用缓存文件中的方法,三个参数说明见缓存文件

for ($i=0;$i<10;$i++)
{
  echo $i;     //输出
  sleep(1);    //睡眠
}
$cache->endCache();
?>
</body>
</html>

CachePage.php的文件如下所示。
<?php
ob_start();
class CachePage
{

//构造函数-参数path表示缓存位置,time表示缓存的时间(默认120),type表示缓存文件的类型(将缓存文件保存为txt格式)
function CachePage($path,$time = 120,$type = 'txt')
{
  $this->path     = $path;
  $this->time     = $time;
  $this->fileType = $type;
  $this->fileName = $_SERVER['DOCUMENT_ROOT'].'\\'.$this->path.'\\'.md5($_SERVER['URL'].'?'.$_SERVER['QUERY_STRING']).'.'.$this->fileType;   //当前文件地址
  if (file_exists($this->fileName) && ((filemtime($this->fileName)+$this->time) > time()))
  {
    $fp = fopen($this->fileName,"r");              //读取缓存文件的操作
    echo fread($fp,filesize($this->fileName));
    fclose($fp);
    ob_end_flush();
    exit;
  }
}

//在test.php文件最后,加入此方法,写入缓存文件。
function endCache()
{
  $fp      = fopen($this->fileName,"w");
  fwrite($fp,ob_get_contents());
  fclose($fp);
  ob_end_flush();
}

}
?>

运行test.php,一定要运行两次,并对比前后结果。因为只有第二次才会生成缓存。


posted on 2007-11-09 09:22 技术是第一生产力 阅读(340) 评论(0)  编辑 收藏 引用 所属分类: PHP技巧
只有注册用户登录后才能发表评论。
<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用链接

留言簿(4)

随笔分类(86)

随笔档案(111)

搜索

  •  

积分与排名

  • 积分 - 43875
  • 排名 - 124

最新随笔

最新评论

评论排行榜