Пример #1
0
 /**
  * Set the cache components based on the settings chosen in the admin
  *
  */
 protected function setCacheOptions()
 {
     // Set content cache
     $caches = array('cache' => array('class' => getParam('global_content_cache', 'CFileCache')), 'dataCache' => array('class' => getParam('global_data_cache', 'CFileCache')));
     foreach ($caches as $cacheKey => $cacheData) {
         $failed = false;
         // Based on the cache type we add additional values
         switch ($cacheData['class']) {
             case 'CDbCache':
                 $caches[$cacheKey]['connectionID'] = 'db';
                 break;
             case 'CFileCache':
                 $caches[$cacheKey]['directoryLevel'] = 2;
                 break;
             case 'CMemCache':
                 // Build server array
                 $servers = getParam('memcache_cache_servers');
                 if ($servers) {
                     // Explode servers
                     $explodeServers = explode("\n", $servers);
                     $serversList = array();
                     foreach ($explodeServers as $serverItem) {
                         list($serverAddress, $serverPort, $weight) = explode(':', $serverItem);
                         $serversList[] = array('host' => $serverAddress, 'port' => $serverPort, 'weight' => $weight);
                     }
                     $caches[$cacheKey]['servers'] = $serversList;
                 }
                 break;
             default:
                 $failed = true;
                 break;
         }
         // Make sure we have the settings
         if (!$failed) {
             Yii::app()->setComponent($cacheKey, Yii::CreateComponent($caches[$cacheKey]));
         }
     }
 }