PHP文件缓存类示例分享

  

复制代码 代码如下:

  <?php

  /**

  * @desc 文件缓存

  */

  class Cache{

  const C_FILE = '/Runtime/';

  private $dir = '';

  const EXT = '.tpl';

  private $filename = '';

  public function __construct($dir = ''){

  $this->dir = $dir;

  }

  /**

  *    @desc 设置文件缓存

  *    @param string $key 文件名

  *    @param unkonw $data 缓存数据

  *    @param int    $expire 过期时间

  */

  public function set($key,$data,$expire = 0){

  $this->filename =     dirname(__FILE__).self::C_FILE.$this->dir.$key.self::EXT;

  if(file_exists($this->filename)){

  $res = $this->get($key);

  if(md5($res) == md5(json_encode($data) ) ){

  return true;

  }

  }

  if(!is_dir(dirname($this->filename))){

  mkdir(dirname($this->filename),0777);

  }

  $source = fopen($this->filename,'w+');

  fwrite($source,json_encode($data));

  fclose($source);

  }

  /**

  *    @desc 获取文件

  *  @param string $key 文件名

  */

  public function get($key){

  //$filename = dirname(__FILE__).self::C_FILE.$this->dir.$key.self::EXT;

  if(!file_exists($this->filename)){

  return '缓存文件已经不存在';

  }else{

  $res = file_get_contents($this->filename);

  }

  return $res;

  }

  /**

  *    @desc 删除文件

  *  @param string $key 文件名

  */

  public function del($key){

  unlink($this->filename);

  }

  }

  $data = array('name'=>'song','age'=>20,'sex'=>'man','favority'=>array('apple','banana'));

  $cache = new Cache();

  $cache->set('cache',$data);

  //$cache->get('cache');

  //$cache->del('cache');