/** * */ public static function init() { if (!self::$instance instanceof \Zend_Cache_Core) { // check for custom cache configuration $customCacheFile = PIMCORE_CONFIGURATION_DIRECTORY . "/cache.xml"; if (is_file($customCacheFile)) { $config = self::getDefaultConfig(); try { $conf = new \Zend_Config_Xml($customCacheFile); if ($conf->frontend) { $config["frontendType"] = (string) $conf->frontend->type; $config["customFrontendNaming"] = (bool) $conf->frontend->custom; if ($conf->frontend->options && method_exists($conf->frontend->options, "toArray")) { $config["frontendConfig"] = $conf->frontend->options->toArray(); } } if ($conf->backend) { $config["backendType"] = (string) $conf->backend->type; $config["customBackendNaming"] = (bool) $conf->backend->custom; if ($conf->backend->options && method_exists($conf->backend->options, "toArray")) { $config["backendConfig"] = $conf->backend->options->toArray(); } } if (isset($config["frontendConfig"]["lifetime"])) { self::$defaultLifetime = $config["frontendConfig"]["lifetime"]; } $config = self::normalizeConfig($config); // here you can use the cache backend you like try { self::$instance = self::initializeCache($config); } catch (\Exception $e) { \Logger::crit("can't initialize cache with the given configuration " . $e->getMessage()); } } catch (\Exception $e) { \Logger::crit($e); \Logger::crit("Error while reading cache configuration, using the default file backend"); } } } // return default cache if cache cannot be initialized if (!self::$instance instanceof \Zend_Cache_Core) { self::$instance = self::getDefaultCache(); } self::$instance->setLifetime(self::$defaultLifetime); self::$instance->setOption("automatic_serialization", true); self::$instance->setOption("automatic_cleaning_factor", 0); // init the write lock once (from other processes etc.) if (self::$writeLockTimestamp === null) { self::$writeLockTimestamp = 0; // set the write lock to 0, otherwise infinite loop (self::hasWriteLock() calls self::getInstance()) self::hasWriteLock(); } self::setZendFrameworkCaches(self::$instance); }
/** * */ public static function init() { if (!self::$instance instanceof \Zend_Cache_Core) { // check for custom cache configuration $customConfigFile = \Pimcore\Config::locateConfigFile("cache.php"); if (is_file($customConfigFile)) { $config = self::getDefaultConfig(); $conf = (include $customConfigFile); if (is_array($conf)) { if (isset($conf["frontend"])) { $config["frontendType"] = $conf["frontend"]["type"]; $config["customFrontendNaming"] = $conf["frontend"]["custom"]; if (isset($conf["frontend"]["options"])) { $config["frontendConfig"] = $conf["frontend"]["options"]; } } if (isset($conf["backend"])) { $config["backendType"] = $conf["backend"]["type"]; $config["customBackendNaming"] = $conf["backend"]["custom"]; if (isset($conf["backend"]["options"])) { $config["backendConfig"] = $conf["backend"]["options"]; } } if (isset($config["frontendConfig"]["lifetime"])) { self::$defaultLifetime = $config["frontendConfig"]["lifetime"]; } $config = self::normalizeConfig($config); // here you can use the cache backend you like try { self::$instance = self::initializeCache($config); } catch (\Exception $e) { Logger::crit("can't initialize cache with the given configuration " . $e->getMessage()); } } else { Logger::crit("Error while reading cache configuration, using the default database backend"); } } } // return default cache if cache cannot be initialized if (!self::$instance instanceof \Zend_Cache_Core) { self::$instance = self::getDefaultCache(); } self::$instance->setLifetime(self::$defaultLifetime); self::$instance->setOption("automatic_serialization", true); self::$instance->setOption("automatic_cleaning_factor", 0); // init the write lock once (from other processes etc.) if (self::$writeLockTimestamp === null) { self::$writeLockTimestamp = 0; // set the write lock to 0, otherwise infinite loop (self::hasWriteLock() calls self::getInstance()) self::hasWriteLock(); } self::setZendFrameworkCaches(self::$instance); }
/** * Public frontend to set an option * * Just a wrapper to get a specific behaviour for cached_entity * * @param string $name Name of the option * @param mixed $value Value of the option * @throws Zend_Cache_Exception * @return void */ public function setOption($name, $value) { if ($name == 'cached_entity') { $this->setCachedEntity($value); } else { parent::setOption($name, $value); } }
/** * Public frontend to set an option * * Just a wrapper to get a specific behaviour for master_file * * @param string $name Name of the option * @param mixed $value Value of the option * @throws Zend_Cache_Exception * @return void */ public function setOption($name, $value) { if ($name == 'master_file') { $this->setMasterFile($value); } else { if ($name == 'master_files') { $this->setMasterFiles($value); } else { parent::setOption($name, $value); } } }
/** * Setup Cache * * @param Zend_Config $config */ protected function _setupCache(Zend_Config $config) { // Disable cache if (!$config->get('cache')->get('enabled') || !extension_loaded('apc')) { if ($this->_cache instanceof Zend_Cache_Core) { $this->_cache->setOption('caching', false); } else { $this->_cache = Zend_Cache::factory('Core', 'File', array('caching' => false)); } return; } if (!extension_loaded('apc')) { /** * @see Zym_App_Exception */ require_once 'Zym/App/Exception.php'; throw new Zym_App_Exception('Extension "Apc" is required to use "' . get_class($this) . '"\'s cache feature. ' . 'Disable caching or set your own cache object.'); } $prefix = sprintf($config->get('cache')->get('prefix'), $this->getName(true)); $this->_cache = Zend_Cache::factory('Core', 'Apc', array('automatic_serialization' => true, 'cache_id_prefix' => $prefix)); }
/** * Affecte le cache * * @param Zend_Cache_Core $cache */ public static function setCache(Zend_Cache_Core $cache) { $cache->setOption('automatic_serialization', true); static::$_cache = $cache; }