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

5年以前  |  阅读数:491 次  |  编程语言:PHP 

本文实例讲述了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
文件下载
获取IMEI
贪吃蛇
双位运算符
Java生成UUID
PHP自定义函数获取搜索引擎来源关键字的方法
年的日历图
发送邮件
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
指定应用ID以获取对应的应用名称
再谈PHP中单双引号的区别详解
Yii2汉字转拼音类的实例代码
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例