// Extension system starts before container. Manage our own cache.
$this->cache = CRM_Utils_Cache::create(array(
'name' => $cacheGroup,
- 'type' => array('SqlGroup', 'ArrayCache'),
+ 'type' => array('*memory*', 'SqlGroup', 'ArrayCache'),
'prefetch' => TRUE,
));
}
foreach ($types as $type) {
switch ($type) {
+ case '*memory*':
+ if (defined('CIVICRM_DB_CACHE_CLASS') && in_array(CIVICRM_DB_CACHE_CLASS, array('Memcache', 'Memcached'))) {
+ $dbCacheClass = 'CRM_Utils_Cache_' . CIVICRM_DB_CACHE_CLASS;
+ $settings = self::getCacheSettings(CIVICRM_DB_CACHE_CLASS);
+ $settings['prefix'] = $settings['prefix'] . '_' . $params['name'];
+ return new $dbCacheClass($settings);
+ }
+ break;
+
case 'SqlGroup':
if (defined('CIVICRM_DSN') && CIVICRM_DSN) {
return new CRM_Utils_Cache_SqlGroup(array(
array(
array(
'name' => $cacheName,
- 'type' => array('SqlGroup', 'ArrayCache'),
+ 'type' => array('*memory*', 'SqlGroup', 'ArrayCache'),
),
)
))->setFactoryClass('CRM_Utils_Cache')->setFactoryMethod('create');
// the caching into 'All' seems to be a duplicate of caching to
// settingsMetadata__ - I think the reason was to cache all settings as defined & then those altered by a hook
$settingsMetadata = $cache->get($cacheString);
- $cached = ($settingsMetadata === NULL);
+ $cached = is_array($settingsMetadata);
- if ($settingsMetadata === NULL) {
+ if (!$cached) {
$settingsMetadata = $cache->get(self::ALL);
if (empty($settingsMetadata)) {
global $civicrm_root;