| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- <?php
 
- /**
 
-  *  cache_factory.class.php 缓存工厂类
 
-  *
 
-  * @copyright			(C) 2005-2010 PHPCMS
 
-  * @license				http://www.phpcms.cn/license/
 
-  * @lastmodify			2010-6-1
 
-  */
 
- final class cache_factory {
 
- 	
 
- 	/**
 
- 	 * 当前缓存工厂类静态实例
 
- 	 */
 
- 	private static $cache_factory;
 
- 	
 
- 	/**
 
- 	 * 缓存配置列表
 
- 	 */
 
- 	protected $cache_config = array();
 
- 	
 
- 	/**
 
- 	 * 缓存操作实例化列表
 
- 	 */
 
- 	protected $cache_list = array();
 
- 	
 
- 	/**
 
- 	 * 构造函数
 
- 	 */
 
- 	public function __construct() {
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 返回当前终级类对象的实例
 
- 	 * @param $cache_config 缓存配置
 
- 	 * @return object
 
- 	 */
 
- 	public static function get_instance($cache_config = '') {
 
- 		if(cache_factory::$cache_factory == '' || $cache_config !='') {
 
- 			cache_factory::$cache_factory = new cache_factory();
 
- 			if(!empty($cache_config)) {
 
- 				cache_factory::$cache_factory->cache_config = $cache_config;
 
- 			}
 
- 		}
 
- 		return cache_factory::$cache_factory;
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 获取缓存操作实例
 
- 	 * @param $cache_name 缓存配置名称
 
- 	 */
 
- 	public function get_cache($cache_name) {
 
- 		if(!isset($this->cache_list[$cache_name]) || !is_object($this->cache_list[$cache_name])) {
 
- 			$this->cache_list[$cache_name] = $this->load($cache_name);
 
- 		}
 
- 		return $this->cache_list[$cache_name];
 
- 	}
 
- 	
 
- 	/**
 
- 	 *  加载缓存驱动
 
- 	 * @param $cache_name 	缓存配置名称
 
- 	 * @return object
 
- 	 */
 
- 	public function load($cache_name) {
 
- 		$object = null;
 
- 		if(isset($this->cache_config[$cache_name]['type'])) {
 
- 			switch($this->cache_config[$cache_name]['type']) {
 
- 				case 'file' :
 
- 					$object = pc_base::load_sys_class('cache_file');
 
- 					break;
 
- 				case 'memcache' :
 
- 					define('MEMCACHE_HOST', $this->cache_config[$cache_name]['hostname']);
 
- 					define('MEMCACHE_PORT', $this->cache_config[$cache_name]['port']);
 
- 					define('MEMCACHE_TIMEOUT', $this->cache_config[$cache_name]['timeout']);
 
- 					define('MEMCACHE_DEBUG', $this->cache_config[$cache_name]['debug']);
 
- 					
 
- 					$object = pc_base::load_sys_class('cache_memcache');
 
- 					break;
 
- 				case 'apc' :
 
- 					$object = pc_base::load_sys_class('cache_apc');
 
- 					break;
 
- 				default :
 
- 					$object = pc_base::load_sys_class('cache_file');
 
- 			}
 
- 		} else {
 
- 			$object = pc_base::load_sys_class('cache_file');
 
- 		}
 
- 		return $object;
 
- 	}
 
- }
 
- ?>
 
 
  |