Example #1
0
 /**
  *
  */
 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);
 }
Example #2
0
 /**
  *
  */
 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);
 }
Example #3
0
 /**
  * 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);
     }
 }
Example #4
0
 /**
  * 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);
         }
     }
 }
Example #5
0
 /**
  * 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));
 }
Example #6
0
 /**
  * Affecte le cache
  *
  * @param Zend_Cache_Core $cache
  */
 public static function setCache(Zend_Cache_Core $cache)
 {
     $cache->setOption('automatic_serialization', true);
     static::$_cache = $cache;
 }