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 相关文章推荐
使用eAccelerator加密PHP程序
Oct 03 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
模板引擎正则表达式调试小技巧
Jul 20 PHP
PHP的引用详解
Feb 22 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Laravel模糊查询区分大小写的实例
Sep 29 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
Laravel框架源码解析之入口文件原理分析
May 14 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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中变量及部分适用方法
2008/03/27 PHP
PHP中设置时区方法小结
2012/06/03 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
浅谈php扩展imagick
2014/06/02 PHP
php操作redis缓存方法分享
2015/06/03 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
js 调整select 位置的函数
2008/02/21 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
目前最全的python的就业方向
2018/06/05 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python中eval与int的区别浅析
2019/08/11 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
django修改models重建数据库的操作
2020/03/31 Python
python如何实现word批量转HTML
2020/09/30 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
运动会解说词100字
2014/01/31 职场文书
防汛通知
2015/04/25 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL