php文件缓存类用法实例分析


Posted in PHP onApril 22, 2015

本文实例讲述了php文件缓存类用法。分享给大家供大家参考。具体如下:

<?php
/**
 * 简单的文件缓存类
 *
 */
class XZCache{
 // default cache time one hour
 var $cache_time = 3600;
 // default cache dir
 var $cache_dir = './cache';
 public function __construct($cache_dir=null, $cache_time=null){
  $this->cache_dir = isset($cache_dir) ? $cache_dir : $this->cache_dir;
  $this->cache_time = isset($cache_time) ? $cache_time : $this->cache_time;
 }
 public function saveCache ($key, $value){
  if (is_dir($this->cache_dir)){
   $cache_file = $this->cache_dir . '/xzcache_' . md5($key);
   $timedif = @(time() - filemtime($cache_file));
   if ($timedif >= $this->cache_time) {
    // cached file is too old, create new
    $serialized = serialize($value);
    if ($f = @fopen($cache_file, 'w')) {
     fwrite ($f, $serialized, strlen($serialized));
     fclose($f);
    }
   }
   $result = 1;
  }else{
   echo "Error:dir is not exist.";
   $result = 0;
  }
  return $result;
 }
 /**
  * @return array 
  *   0 no cache
  *    1 cached
  *    2 overdue
  */
 public function getCache ($key) {
  $cache_file = $this->cache_dir . '/xzcache_' . md5($key);
  if (is_dir($this->cache_dir) && is_file($cache_file)) {
   $timedif = @(time() - filemtime($cache_file));
   if ($timedif >= $this->cache_time) {
    $result['cached'] = 2;
   }else{
    // cached file is fresh enough, return cached array
    $result['value'] = unserialize(file_get_contents($cache_file));
    $result['cached'] = 1;
   }
  }else {
   echo "Error:no cache";
   $result['cached'] = 0;
  }
  return $result;
 }
} //end of class

用法示例如下:

$cache = new XZCache();
$key = 'global';
$value = $GLOBALS;
$cache->saveCache($key, $value);
$result = $cache->getCache($key);
var_dump($result);

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
php中设置多级目录session的问题
Aug 08 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
PHP 无限级分类
May 04 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
PHP递归的三种常用方式
Feb 28 PHP
php实现的表单验证类完整示例
Aug 13 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 #PHP
PHP判断是否为空的几个函数对比
Apr 21 #PHP
php两种无限分类方法实例
Apr 21 #PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 #PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
You might like
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php实现的双向队列类实例
2014/09/24 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
使用js简单实现了tree树菜单
2013/11/20 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
初步剖析C语言编程中的结构体
2016/01/16 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
世界环境日活动总结
2015/02/11 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis
Python如何使用循环结构和分支结构
2022/04/13 Python