/** * 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])); } } }