php文件缓存类用法实例分析

作者:邪云子 时间:2023-08-17 16:26:44 

本文实例讲述了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,文件,缓存类
0
投稿

猜你喜欢

  • Python第三方库xlrd/xlwt的安装与读写Excel表格

    2023-12-16 22:52:34
  • Oracle 9i产品文档

    2010-07-16 13:35:00
  • Python OpenCV中cv2.minAreaRect实例解析

    2022-09-02 19:36:58
  • Windows系统下MySQL无法启动的万能解决方法

    2024-01-16 10:59:26
  • Python Pyperclip模块安装和使用详解

    2023-06-25 13:52:11
  • SQL函数substr使用简介

    2024-01-27 11:12:02
  • 解决SQL SERVER 2008数据库表中修改字段后不能保存

    2024-01-18 07:31:10
  • ajax局部刷新一个div下jsp内容的方法

    2024-05-02 17:04:45
  • Mysql常见的慢查询优化方式总结

    2024-01-26 02:17:04
  • 修改SQL Server 2005 sa用户密码的方法

    2008-12-10 14:41:00
  • 基于python中staticmethod和classmethod的区别(详解)

    2023-09-30 22:03:32
  • centos7下mysql5.6的主从复制详解

    2024-01-18 03:52:21
  • MySQL慢查询日志的作用和开启

    2024-01-21 20:23:33
  • 实现php删除链表中重复的结点

    2023-09-05 09:36:15
  • Python数据获取实现图片数据提取

    2022-08-15 03:37:30
  • Python面向对象程序设计之私有变量,私有方法原理与用法分析

    2022-04-17 01:37:50
  • Python实现求两个数组交集的方法示例

    2023-08-03 18:57:58
  • asp如何显示全部的环境变量?

    2010-06-08 09:34:00
  • Python异常类型以及处理方法汇总

    2021-11-22 00:07:03
  • python反编译教程之2048小游戏实例

    2023-07-24 08:04:47
  • asp之家 网络编程 m.aspxhome.com