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 Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
PHP函数getenv简介和使用实例
May 12 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
laravel与thinkphp之间的区别与优缺点
Mar 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
PR值查询 | PageRank 查询
2006/12/20 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
常用的js方法合集
2017/03/10 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python简单实现控制电脑的方法
2018/01/22 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
前台文员个人求职信范文
2014/01/05 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
股权收购意向书
2014/04/01 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
详解Java实践之适配器模式
2021/06/18 Java/Android