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 相关文章推荐
使用PHP获取网络文件的实现代码
Jan 01 PHP
php header示例代码(推荐)
Sep 08 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
php去除头尾空格的2种方法
Mar 16 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 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 str_pad 函数用法简介
2009/07/11 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
javascript 获取表单file全路径
2009/12/31 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
原生js实现碰撞检测
2020/03/12 Javascript
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python re模块的高级用法详解
2018/06/06 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
python3下pygame如何实现显示中文
2020/01/11 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
GWT的应用有哪两种部署模式
2012/12/21 面试题
英语专业职业生涯规划范文
2014/03/05 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
专职安全员岗位职责
2015/04/11 职场文书
开会通知
2015/04/20 职场文书
学校社团活动总结
2015/05/07 职场文书
党校培训学习心得体会
2016/01/06 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
openstack中的rpc远程调用的方法
2021/07/09 Python
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android