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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
PHP 在线翻译函数代码
May 07 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 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与XML联手进行网站编程代码实例
2008/07/10 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
javascript模拟命名空间
2015/04/17 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
Python实现全局变量的两个解决方法
2014/07/03 Python
零基础写python爬虫之神器正则表达式
2014/11/06 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python实现换位加密算法的示例
2018/10/14 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
酒店管理毕业生自荐信
2014/05/25 职场文书
县委务虚会发言材料
2014/10/20 职场文书
出国留学自荐信模板
2015/03/06 职场文书
毕业生学校组织意见
2015/06/04 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python