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 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
PHP通过COM使用ADODB的简单例子
Dec 31 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP7内核之Reference详解
Mar 14 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 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新手上路(十一)
2006/10/09 PHP
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
运行django项目指定IP和端口的方法
2018/05/14 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
python3中for循环踩过的坑记录
2020/12/14 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
如何处理简单的PHP错误
2015/10/14 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
打架检讨书400字
2014/01/17 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
股权转让协议书
2014/04/12 职场文书
篮球比赛策划方案
2014/06/05 职场文书
上课不认真检讨书
2014/09/17 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
《称赞》教学反思
2016/02/17 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技