/** * {@inheritdoc} */ public function readMultiple(array $names) { $data_to_return = array(); $cache_keys_map = $this->getCacheKeys($names); $cache_keys = array_values($cache_keys_map); $cached_list = $this->cache->getMultiple($cache_keys); if (!empty($cache_keys)) { // $cache_keys_map contains the full $name => $cache_key map, while // $cache_keys contains just the $cache_key values that weren't found in // the cache. // @see \Drupal\Core\Cache\CacheBackendInterface::getMultiple() $names_to_get = array_keys(array_intersect($cache_keys_map, $cache_keys)); $list = $this->storage->readMultiple($names_to_get); // Cache configuration objects that were loaded from the storage, cache // missing configuration objects as an explicit FALSE. $items = array(); foreach ($names_to_get as $name) { $data = isset($list[$name]) ? $list[$name] : FALSE; $data_to_return[$name] = $data; $items[$cache_keys_map[$name]] = array('data' => $data); } $this->cache->setMultiple($items); } // Add the configuration objects from the cache to the list. $cache_keys_inverse_map = array_flip($cache_keys_map); foreach ($cached_list as $cache_key => $cache) { $name = $cache_keys_inverse_map[$cache_key]; $data_to_return[$name] = $cache->data; } // Ensure that only existing configuration objects are returned, filter out // cached information about missing objects. return array_filter($data_to_return); }
/** * {@inheritdoc} */ public function readMultiple(array $names) { $list = array(); // The names array is passed by reference and will only contain the names of // config object not found after the method call. // @see \Drupal\Core\Cache\CacheBackendInterface::getMultiple() $cached_list = $this->cache->getMultiple($names); if (!empty($names)) { $list = $this->storage->readMultiple($names); // Cache configuration objects that were loaded from the storage, cache // missing configuration objects as an explicit FALSE. $items = array(); foreach ($names as $name) { $items[$name] = array('data' => isset($list[$name]) ? $list[$name] : FALSE); } $this->cache->setMultiple($items); } // Add the configuration objects from the cache to the list. foreach ($cached_list as $name => $cache) { $list[$name] = $cache->data; } // Ensure that only existing configuration objects are returned, filter out // cached information about missing objects. return array_filter($list); }
/** * {@inheritdoc} */ public function setMultiple(array $items) { $this->consistentBackend->setMultiple($items); $this->markAsOutdated(); // Don't write the cache tags to the fast backend as any cache tag // invalidation results in an invalidation of the whole fast backend. foreach ($items as &$item) { unset($item['tags']); } $this->fastBackend->setMultiple($items); }
/** * {@inheritdoc} */ public function setMultiple(array $items) { $this->markAsOutdated(); $this->consistentBackend->setMultiple($items); $this->fastBackend->setMultiple($items); }
/** * {@inheritdoc} */ public function setMultiple(array $items) { return $this->cacheBackend->setMultiple($items); }