ThinkPHP文件缓存类代码分享


Posted in PHP onApril 22, 2015

取自ThinkPHP的文件缓存类代码,这里就不多废话了,小伙伴们自己看注释吧。

<?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');
PHP 相关文章推荐
php生成文件
Jan 15 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php中取得URL的根域名的代码
Mar 23 PHP
php比较两个绝对时间的大小
Jan 31 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
php日期操作技巧小结
Jun 25 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
php文件下载处理方法分析
Apr 22 #PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 #PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 #PHP
php文件缓存类用法实例分析
Apr 22 #PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 #PHP
PHP判断是否为空的几个函数对比
Apr 21 #PHP
php两种无限分类方法实例
Apr 21 #PHP
You might like
探讨方法的重写(覆载)详解
2013/06/08 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
axios异步提交表单数据的几种方法
2019/08/11 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
python实现静态web服务器
2019/09/03 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
售后服务承诺函格式
2015/01/21 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
python OpenCV学习笔记
2021/03/31 Python
在pyCharm中下载第三方库的方法
2021/04/18 Python
Redis RDB技术底层原理详解
2021/09/04 Redis