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的知识
Nov 17 PHP
php生成缩略图的类代码
Oct 02 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
图片之间的切换
2006/06/26 Javascript
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
简洁的十分钟Python入门教程
2015/04/03 Python
python简单的函数定义和用法实例
2015/05/07 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Django使用rest_framework写出API
2020/05/21 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
法雷奥SQA(electric)面试问题
2016/01/23 面试题
JPA的特点
2014/10/25 面试题
英语生日邀请函
2014/01/23 职场文书
八年级美术教学反思
2014/02/02 职场文书
关于环保的建议书400字
2014/03/12 职场文书
求职自荐信的格式
2014/04/07 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
北京爱情故事观后感
2015/06/12 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电