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里的JS打印函数
Oct 09 PHP
mysql 全文搜索 技巧
Apr 27 PHP
基于php iconv函数的使用详解
Jun 09 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
php封装的验证码类分享
Feb 26 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 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空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
网页常用特效代码整理
2006/06/23 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
JS实现div居中示例
2014/04/17 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python中元类用法实例
2014/10/10 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
计算机通信专业推荐信
2014/02/22 职场文书
火锅店营销方案
2014/02/26 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
佛光寺导游词
2015/02/10 职场文书
征求意见函
2015/06/05 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
创业计划书之家教中心
2019/09/25 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
Golang中channel的原理解读(推荐)
2021/10/16 Golang
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
nginx配置指令之server_name的具体使用
2022/08/14 Servers
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python