PHP文件缓存内容保存格式实例分析


Posted in PHP onAugust 20, 2014

本文实例讲述了PHP文件缓存内容保存格式,对于进行PHP项目开发非常具有实用价值。分享给大家供大家参考借鉴。具体分析如下:

1、PHP文件缓存内容保存格式

PHP文件缓存内容保存格式主要有三种:

(1)变量 var_export 格式化成PHP正常的赋值书写格式;
(2)变量 serialize 序列化之后保存,用的时候反序列化;
(3)变量 json_encode格式化之后保存,用的时候json_decode

互联网上测试结果是:serialize格式的文件解析效率大于Json,Json的解析效率大于PHP正常赋值。
所以我们要是缓存数据建议采用序列化的形式解析数据会更快。

2、PHP文件缓存的简单案例

<?php
class Cache_Driver {
  //定义缓存的路径
  protected $_cache_path;
  //根据$config中的cache_path值获取路径信息
  public function Cache_Driver($config) {
    if (is_array($config) && isset($config['cache_path'])) {
      $this->_cache_path = $config['cache_path'];
    } else {
      $this->_cache_path = realpath(dirname(__FILE__) . "/") . "/cache/";
    }
  }
  //判断key值对应的文件是否存在,如果存在,读取value值,value以序列化存储
  public function get($id) {
    if (!file_exists($this->_cache_path . $id)) {
      return FALSE;
    }
    $data = @file_get_contents($this->_cache_path . $id);
    $data = unserialize($data);
    if (!is_array($data) || !isset($data['time']) || !isset($data['ttl'])) {
      return FALSE;
    }
    if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl']) {
      @unlink($this->_cache_path . $id);
      return FALSE;
    }
    return $data['data'];
  }
  //设置缓存信息,根据key值,生成相应的缓存文件
  public function set($id, $data, $ttl = 60) {
    $contents = array(
      'time' => time() ,
      'ttl' => $ttl,
      'data' => $data
    );
    if (@file_put_contents($this->_cache_path . $id, serialize($contents))) {
      @chmod($this->_cache_path . $id, 0777);
      return TRUE;
    }
    return FALSE;
  }
  //根据key值,删除缓存文件
  public function delete($id) {
    return @unlink($this->_cache_path . $id);
  }
  public function clean() {
    $dh = @opendir($this->_cache_path);
    if (!$dh) return FALSE;
    while ($file = @readdir($dh)) {
      if ($file == "." || $file == "..") continue;
      $path = $this->_cache_path . "/" . $file;
      if (is_file($path)) @unlink($path);
    }
    @closedir($dh);
    return TRUE;
  }
}

希望本文所述PHP缓存实例对大家的PHP程序开发能起到一定的帮助借鉴作用。

PHP 相关文章推荐
再次研究下cache_lite
Feb 14 PHP
使用PHP的日期与时间函数技巧
Apr 24 PHP
PHP session会话的安全性分析
Sep 08 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
php-msf源码详解
Dec 25 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 #PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 #PHP
实例讲解PHP面向对象之多态
Aug 20 #PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 #PHP
Linux下PHP连接Oracle数据库
Aug 20 #PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 #PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 #PHP
You might like
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Unicode和Python的中文处理
2017/03/19 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
python实现决策树
2017/12/21 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
Python extract及contains方法代码实例
2020/09/11 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
暑期学习心得体会
2014/09/02 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
道德与公民自我评价
2015/03/09 职场文书
导游词之天津古文化街
2019/11/09 职场文书
redis限流的实际应用
2021/04/24 Redis
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL