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 相关文章推荐
第三节--定义一个类
Nov 16 PHP
php分页代码学习示例分享
Feb 20 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php提交post数组参数实例分析
Dec 17 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
PHP var关键字相关原理及使用实例解析
Jul 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 DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
通过python3实现投票功能代码实例
2019/09/26 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python实现简单的2048小游戏
2021/03/01 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
公益广告宣传方案
2014/02/28 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
企业法人授权委托书
2014/09/25 职场文书
五四青年节活动总结
2015/02/10 职场文书
导游词格式
2015/02/13 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL