/** * Returns cache engine instance * * @param string $engine * @param array $config * @return W3_Cache_Base */ function &instance($engine, $config = array()) { static $instances = array(); $instance_key = sprintf('%s_%s', $engine, md5(serialize($config))); if (!isset($instances[$instance_key])) { switch ($engine) { case W3_CACHE_MEMCACHED: require_once W3TC_LIB_W3_DIR . '/Cache/Memcached.php'; $instances[$instance_key] =& W3_Cache_Memcached::instance($config['engine'], $config); break; case W3_CACHE_APC: require_once W3TC_LIB_W3_DIR . '/Cache/Apc.php'; $instances[$instance_key] =& new W3_Cache_Apc(); break; case W3_CACHE_FILE: require_once W3TC_LIB_W3_DIR . '/Cache/File.php'; $instances[$instance_key] =& new W3_Cache_File($config); break; case W3_CACHE_FILE_PGCACHE: require_once W3TC_LIB_W3_DIR . '/Cache/File/PgCache.php'; $instances[$instance_key] =& new W3_Cache_File_PgCache($config); break; default: trigger_error('Incorrect cache engine', E_USER_WARNING); require_once W3TC_LIB_W3_DIR . '/Cache/Base.php'; $instances[$instance_key] =& new W3_Cache_Base(); break; } } return $instances[$instance_key]; }
/** * Returns minify cache object * * @return object */ function &_get_cache() { static $cache = array(); if (!isset($cache[0])) { switch ($this->_config->get_string('minify.engine')) { case 'memcached': require_once W3TC_LIB_W3_DIR . '/Cache/Memcached.php'; require_once W3TC_LIB_MINIFY_DIR . '/Minify/Cache/Memcache.php'; $this->_memcached =& W3_Cache_Memcached::instance($this->_config->get_string('minify.memcached.engine'), array('servers' => $this->_config->get_array('minify.memcached.servers'), 'persistant' => true)); $cache[0] =& new Minify_Cache_Memcache($this->_memcached); break; case 'apc': require_once W3TC_LIB_MINIFY_DIR . '/Minify/Cache/APC.php'; $cache[0] =& new Minify_Cache_APC(); break; default: require_once W3TC_LIB_MINIFY_DIR . '/Minify/Cache/File.php'; if (!is_dir(W3TC_CACHE_FILE_MINIFY_DIR)) { $this->log(sprintf('Cache directory %s does not exist', W3TC_CACHE_FILE_MINIFY_DIR)); } $cache[0] =& new Minify_Cache_File(W3TC_CACHE_FILE_MINIFY_DIR, $this->_config->get_boolean('minify.file.locking')); break; } } return $cache[0]; }