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开启gzip页面压缩实例代码
Mar 11 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP 数组基础知识小结
Aug 20 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
PHP线程的内存回收问题
Jul 08 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
php自定义时间转换函数示例
Dec 07 PHP
PHP中的访问修饰符简单比较
Feb 02 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数据集构建JSON格式及新数组的方法
2012/11/07 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
python numpy库np.percentile用法说明
2020/06/08 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
酒店开业策划方案
2014/06/02 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Python基础之元组与文件知识总结
2021/05/19 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android