php缓存技术详谈

http://tech.ddvip.com   2007年08月25日    社区交流

内容摘要:由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库掉,我们可以从其他的地方,比方一个文件,或者某个内存地址,这就是php的缓存技术,也就是Cache技术.

  写入字节流,serialize写入其他格式

  ,顺便一提的是如果我们要把一个数组,(可以从MySQL数据库里面select查询除了的结果)用serialize函数写入,用unserialize读取到原来的类型.

functiondisplay_cache($cacheFile){
      if(!file_exists($cacheFile)){
        $this->warn('无法读取缓存文件.');//trigger_error
        returnfalse;
      }
      echo'读取缓存文件:'.$cacheFile;
//returnunserialize(file_get_contents($cacheFile));
    $fso=fopen($cacheFile,'r');
    $data=fread($fso,filesize($cacheFile));
    fclose($fso);
  return$data;
}

  这是由文件名称读取缓存的方法,直接打开文件,读取全部,如果文件不存在的或者无法读取的话返回false,当然,你感到不人性的话,可以重新生成缓存.

functionreadData($cacheFile='default_cache.txt'){
  $cacheFile  =  $this->cache_dir."/".$cacheFile;
  if(file_exists($cacheFile)&&filemtime($cacheFile)>(time()-$this->expireTime)){
    $data=$this->display_cache($cacheFile);
    }else{
      $data="fromherewocangetitfrommysqldatabase,updatetimeis<b>".date('ldSofFYh:i:sA')."</b>,过期时间是:".date('ldSofFYh:i:sA',time()+$this->expireTime)."----------";
      $this->cache_page($cacheFile,$data);
  }
    return$data;
}

  这个函数是我们调用的方法,可以写成接口的方法,由传入参数判断文件存在不,文件最后修改时间+expireTime的时间是不是过了当前时间(大于的话说明没有过期),如果文件不存在或者已经过期,重新加载原始数据,这里,为了简单期间,我们是直接源是字符串,您可以把cache类继承某类,取到数据库的数据.(注释2)

  四:补充说明,结语 

  注释一:这个缓存的时间您可以自己调,可以根据时间情况读取数组,xml,缓存等,请按照您的方便,值得一提的是缓存的时间(也就是缓存的key)也用缓存控制,.这在cms系统中被广泛使用,他们把要更新的key放在缓存中,非常容易控制全战.

  注释二:php5开始支持类继承,这是让人兴奋的,把网站全局休息写在一个配置的类里面,再写与数据层交互的类(如与MySQL交互的类),我们的这个cache类继承数据交互的类,可以非常容易的读取数据库,这是外话,此处不再展开,有时间和大家详谈.

  特别说明,这个类文件针对的php5以上版本,其他版本的请不要使用类.

来源:蓝色理想    作者:5do8    责编:豆豆技术应用

正在加载评论...