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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
PHP中redis的用法深入解析
Feb 20 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
PHP扩展类型及安装方式解析
Apr 27 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下通过POST还是GET来传值
2008/06/05 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP内核探索之变量
2015/12/22 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
简单实现js浮动框
2016/12/13 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python脚本实现虾米网签到功能
2016/04/12 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python使用递归的方式建立二叉树
2019/07/03 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
专业销售业务员求职信
2013/11/18 职场文书
计算机学生求职信范文
2014/01/30 职场文书
白酒营销策划方案
2014/08/17 职场文书
物业保洁员管理制度
2015/08/05 职场文书
高考升学宴主持词
2019/06/21 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers