PHP头条
热点:

cache_page方法分别传入的是缓存的文件名称和数据,这是把数据写到文件里的方法,先用fopen打开文件,然后调用句柄锁定这个文件,然后用fwrite写入文件,最后释放这个句柄,任何一步发生错误将抛出错误. 您可能看到这个注释:

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

  1. function display_cache($cacheFile){  
  2.             if(!file_exists($cacheFile)){  
  3.     $this->warn('无法读取缓存文件.');//trigger_error  
  4.     return false;  
  5.             }  
  6.    echo '读取缓存文件:'.$cacheFile;  
  7. //return unserialize(file_get_contents($cacheFile));  
  8.         $fso = fopen($cacheFile, 'r');  
  9.         $data = fread($fso, filesize($cacheFile));  
  10.         fclose($fso);  
  11.  return $data;  

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

  1. function readData($cacheFile='default_cache.txt'){  
  2.  $cacheFile = $this->cache_dir."/".$cacheFile;  
  3.  if(file_exists($cacheFile)&&filemtime($cacheFile)>(time()-$this->expireTime)){  
  4.   $data=$this->display_cache($cacheFile);  
  5.   }else{  
  6.    $data="from here wo can get it from mysql database,update time is <b>".date('l dS \of F Y h:i:s A')."</b>,过期时间是:".date('l dS \of F Y h:i:s A',time()+$this->expireTime)."----------";  
  7.    $this->cache_page($cacheFile,$data);  
  8.  }  
  9.   return $data;  

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

补充说明 结语

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

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


www.phpzy.comtrue/php/10512.htmlTechArticlecache_page方法分别传入的是缓存的文件名称和数据,这是把数据写到文件里的方法,先用fopen打开文件,然后调用句柄锁定这个文件,然后用fwrite写入文件,最后释...

相关文章

    暂无相关文章
相关频道:

PHP之友评论

今天推荐