php教程

超轻量级php框架startmvc

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

更新时间:2020-03-04 00:54 作者:startmvc
本文实例讲述了php文件缓存类用法。分享给大家供大家参考。具体如下:<?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程序设计有所帮助。