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中看实例学正则表达式
Dec 25 PHP
实用函数2
Nov 08 PHP
php 生成WML页面方法详解
Aug 09 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
javascript 节点排序 2
2011/01/31 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
babel基本使用详解
2017/02/17 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
分享Python文本生成二维码实例
2016/01/06 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
pandas实现导出数据的四种方式
2020/12/13 Python
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
最新个人职业生涯规划书
2014/01/22 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle