搜索
系统检测到您的用户名不符合规范:

实现File缓存统一管理

浏览:1068 发布日期:2013年08月04日 分类:技术分享
经过测试与考虑,我觉得没必要采用第三方类,经测试内存占用比直接调用Cache::getInstance大。所以我觉得应该将缓存配置方案写到配置文件中,MyCache()函数可以保留,直接读取配置,使用Cache::getInstance实例化即可。

即,我这篇文章多余了,客官们看了一笑置之吧

==========
缓存管理器:实现缓存空间定义,自定义缓存目录(支持自动创建多级目录),无需每次都使用S或者Cache::getInstance()重新设定参数。

1.MyCache.class.php
路径:项目目录/Lib/ORG/MyCache.class.php
缓存管理器类,在该类中通过$_tags数组定义每一个缓存空间。例如:将栏目相关的缓存都放在 /runtime/cache/type/ 下,只需要在在该类构造函数中定义:$this->_tags=array(
'type'=>array('temp'=>CACHE_PATH.'type/'),
);
每行定义一个缓存空间,这里定义了一个名为type的缓存空间,缓存文件统一保存在 /runtime/cache/type/目录中。

2.公共函数MyCache()
该函数添加到common.php中,在任意地方通过MyCache('type')->set('typelist',$arr);直接可以在type缓存空间中设置一个名为typelist的缓存变量。当然,如果需要重复调用,你可以$cache=MyCache('type');
$cache->set('typelist',$arr);
$cache->get('typelist');
你可以删除一个缓存通过$cache->rm('typelist');你可以清空缓存空间内的所有缓存$cache->clear();下面贴出代码:
Common/common.php/**
* 缓存管理实例化
*/
function MyCache($tag){
import("ORG.MyCache",LIB_PATH);
$cache=MyCache::getInstance();
if(!$cache->choosetag($tag)){
echo $cache->getLastError();
return false;
}
return $cache;
}
/Lib/ORG/MyCache.class.php<?php
/**
* 缓存管理器
*/
class MyCache {
private $CacheOBJ;//Cache核心类实例,单例
public $_tags=array();//缓存标签定义
public $errors=array();//错误
private function __construct() {
if(!($this->CacheOBJ instanceof Cache)){
$this->CacheOBJ=Cache::getInstance();
}
$this->_tags=array(
"Type"=>array("temp"=>CACHE_PATH.'Type/','expire'=>'3600')
);
}
//静态方法,用于获取缓存管理器实例
static function getInstance(){
static $mycache;
if(!is_object($mycache) || !($mycache instanceof self)){
$mycache=new self();
}
return $mycache;
}


function choosetag($tag=""){
if(!empty($tag) && !isset($this->_tags[$tag])){
$this->errors[]="未找到指定的{$tag}缓存空间!";
return FALSE;
}
$options = $this->_tags[$tag];
if (isset($options['temp']) && !is_dir($options['temp'])) {
if (!mkdir($options['temp'], "0777", true)) {
$this->errors[]="创建缓存目录{$options['temp']}失败,请检查PHP权限或者手动创建";
return false;
}
}
foreach ($options as $k => $v) {
$this->CacheOBJ->setOptions($k, $v);
}
return true;
}

function getLastError(){
return array_pop($this->errors);
}

//智能设定缓存空间参数
function __call($method, $arguments) {
return call_user_func_array(array($this->CacheOBJ,$method), $arguments);
}
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
zstxt1989
积分:6535 等级:LV5
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /