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多用户计数器代码
Mar 11 PHP
php 生成饼图 三维饼图
Sep 28 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
php跨服务器访问方法小结
May 12 PHP
php获取远程文件大小
Oct 20 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
PHP抽象类与接口的区别详解
Mar 21 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
详解Python中的文件操作
2016/08/28 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
Java文件和目录(IO)操作
2014/08/26 面试题
信用卡逾期证明示例
2014/09/13 职场文书
党员民主评议总结
2014/10/20 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
学生会干部任命书
2015/09/21 职场文书