public function get($obj_name) { $this->m_stats->m_gets++; $value = sfProcessCache::get($this->m_namespace . $obj_name); if (!isset($value)) { $this->m_stats->m_misses++; return NULL; } else { $this->m_stats->m_hits++; return $value; } }
/** * @todo Should we throw an exception if the config value does not exist? */ public static function getConfigValueFor($input) { $cache = sfConfig::get('app_phpbb_cache', false); if (!$cache) { $configValues = self::getConfigValues(); if (isset($configValues[$input])) { return $configValues[$input]; } } if ($cache) { $cacheKeyNonDynamic = 'config_values'; $cacheKeyDynamic = 'config_values_dynamic'; if (sfProcessCache::has($cacheKeyNonDynamic)) { $configValues = sfProcessCache::get($cacheKeyNonDynamic); } else { $configValues = self::getConfigValues(0); sfProcessCache::set($cacheKeyNonDynamic, $configValues, myTools::getConfig('app_cache_config_non_dynamic', 86400)); } if (isset($configValues[$input])) { return $configValues[$input]; } // Reset config values before we check dynamic config values unset($configValues); if (sfProcessCache::has($cacheKeyDynamic)) { $configValues = sfProcessCache::get($cacheKeyDynamic); } else { $configValues = self::getConfigValues(1); sfProcessCache::set($cacheKeyDynamic, $configValues, myTools::getConfig('app_cache_config_dynamic', 60)); } if (isset($configValues[$input])) { return $configValues[$input]; } } // If we get here, there is no config value for this input. return null; }
} $cache = new sfProcessCache(); $t->diag('useCache()'); // Simple queries $cache->clear(); $finder = DbFinder::from('Article'); $finder = $finder->where('Title', 'foo')->limit(1); $key = $finder->getUniqueIdentifier(); $finder->findOne(); $t->is($cache->get($key), null, 'No cache is set until the cache is enabled'); $finder = $finder->where('Title', 'foo')->limit(1)->useCache($cache, 10); $finder->findOne(); $t->isnt($cache->get($key), null, 'useCache() activates query caching on simple find() queries'); $SQL1 = $finder->getLatestQuery(); // SELECT * FROM article WHERE article.title = 'foo' LIMIT 1 $finder->where('Title', 'bar')->findOne(); $SQL2 = $finder->getLatestQuery(); // SELECT * FROM article WHERE article.title = 'bar' LIMIT 1 $t->isnt($SQL1, $SQL2, 'Uncached finder queries trigger SQL queries'); $finder->where('Title', 'foo')->findOne(); $SQL3 = $finder->getLatestQuery(); // Using cache, so no new query: SELECT * FROM article WHERE article.title = 'bar' LIMIT 1 $t->is($SQL3, $SQL2, 'Cached finder queries do not trigger SQL queries'); $finder->useCache(false); $finder->where('Title', 'foo')->findOne(); $SQL4 = $finder->getLatestQuery(); // Not using cache, so new query: SELECT * FROM article WHERE article.title = 'foo' LIMIT 1 $t->isnt($SQL4, $SQL2, 'Setting cache to false deactivates the cache');
public function get($key) { return sfProcessCache::get($key); }