/** * */ 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); }
/** * Start caching * * Determine if we have a cache hit. If so, return the response; else, * start caching. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $request = $this->getRequest(); // $request = new Zend_Controller_Request_Http(); $moduleName = $request->getModuleName(); $params = $request->getParams(); /** * On récupère la homeId uniquement si on arrive à la racine du site * @author GDE * @project Belgium Telecom * @since 10/01/2013 */ $pagstrDB = new Pagstructure(); if (count($params) == 3 && $params['module'] == 'publicms' && $params['controller'] == 'index' && $params['action'] == 'view') { $params['page'] = $pagstrDB->getHomeId(Sydney_Tools_Sydneyglobals::getSafinstancesId()); } if ($moduleName == 'publicms' && isset($params['page'])) { $pagstr = $pagstrDB->find($params['page']); if (count($pagstr) == 1) { /** * Enregistre en session le rootid courant * Utilisé pour savoir quel index de recherche utiliser * FAR: Utile aussi pour la séparation par langue * @author GDE * @project Belgium Telecom * @since 10/01/2013 */ $breadCrumData = $pagstrDB->getBreadCrumData(Sydney_Tools_Sydneyglobals::getSafinstancesId(), $this->_treatPageData($params['page'])); $rootid = $breadCrumData[0]['id']; $lucenesearch = new Zend_Session_Namespace('current-page-rootid'); if (!empty($rootid)) { $lucenesearch->rootid = $rootid; } $struct = $pagstr[0]; $struct->hits++; $struct->save(); if (!Sydney_Auth::getInstance()->hasIdentity() && $struct->iscachable != 0 && $struct->cachetime > 0) { $this->cache->setLifetime($struct->cachetime); if (!$request->isGet()) { self::$doNotCache = true; return; } $path = $request->getPathInfo(); $this->key = $moduleName . '_' . md5($path); if (false !== ($response = $this->getCache())) { $response->sendResponse(); exit; } } } } }
/** * Returns a instance of the cache, if the instance isn't available it creates a new one * * @return Zend_Cache_Core|Zend_Cache_Frontend */ public static function getInstance() { if (!empty($_REQUEST["nocache"])) { self::disable(); } if (!self::$instance instanceof Zend_Cache_Core) { // default file based configuration $config = self::getDefaultConfig(); // check for custom cache configuration $customCacheFile = PIMCORE_CONFIGURATION_DIRECTORY . "/cache.xml"; if (is_file($customCacheFile)) { 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) { $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) { $config["backendConfig"] = $conf->backend->options->toArray(); } } } catch (Exception $e) { Logger::error($e); Logger::error("Error while reading cache configuration"); } } self::$defaultLifetime = $config["frontendConfig"]["lifetime"]; // here you can use the cache backend you like try { self::$instance = self::initializeCache($config); } catch (Exception $e) { Logger::warning("can't initialize cache with the given configuration " . $e->getMessage()); } } // return default cache if cache cannot be initialized if (!self::$instance instanceof Zend_Cache_Core) { self::$instance = self::getDefaultCache(); } // reset default lifetime self::$instance->setLifetime(self::$defaultLifetime); return self::$instance; }