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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
PHP学习资料汇总与网址
Mar 16 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
关于js与php互相传值的介绍
Jun 25 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
PHP中实现crontab代码分享
Mar 26 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
php采集时被封ip的解决方法
2010/08/29 PHP
PHP 文件系统详解
2012/09/13 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
动态添加js事件实现代码
2009/03/12 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
一步步解析Python斗牛游戏的概率
2016/02/12 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
python解释器安装教程的方法步骤
2020/07/02 Python
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
超市促销活动方案
2014/03/05 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
公司停电通知
2015/04/15 职场文书
公司承诺书格式范文
2015/04/28 职场文书
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js