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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
php4的session功能评述(二)
Oct 09 PHP
php 数学运算验证码实现代码
Oct 11 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
php中关于socket的系列函数总结
May 18 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
php 策略模式原理与应用深入理解
Sep 25 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 各种排序算法实现代码
2009/08/20 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python 画出来六维图
2019/07/26 Python
python库matplotlib绘制坐标图
2019/10/18 Python
python 项目目录结构设置
2020/02/14 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
银行演讲稿范文
2014/01/03 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
校园广播站开场白
2015/06/01 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android