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 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
一些常用的php简单命令代码集锦
Sep 24 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
PHP异常处理浅析
May 12 PHP
php中使用GD库做验证码
Mar 31 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
PHP实现随机发扑克牌
Apr 22 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP分享图片的生成方法
2018/04/25 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
JS跨域总结
2012/08/30 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
Python的多态性实例分析
2015/07/07 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
质检部部长职责
2013/12/16 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
学校中秋节活动总结
2015/03/23 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB