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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
论坛头像随机变换代码
Oct 09 PHP
PHP初学者头疼问题总结
Oct 09 PHP
mysql limit查询优化分析
Nov 12 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
PHP多文件上传实例
Jul 09 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
php微信公众号开发之欢迎老朋友
Oct 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
文章推荐系统(三)
2006/10/09 PHP
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
python列表的常用操作方法小结
2016/05/21 Python
python文件名和文件路径操作实例
2017/09/29 Python
python线程池threadpool实现篇
2018/04/27 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
机电专业毕业生求职信
2013/10/27 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript