You are here

public function MemcacheDriver::getMulti in Memcache API and Integration 8.2

Retrieves multiple values from Memcache.

Parameters

array $keys: An array of keys for items to retrieve.

Return value

array An array of stored items, or FALSE otherwise.

Overrides DrupalMemcacheInterface::getMulti

File

src/Driver/MemcacheDriver.php, line 45

Class

MemcacheDriver
Class MemcacheDriver.

Namespace

Drupal\memcache\Driver

Code

public function getMulti(array $keys) {
  $collect_stats = $this
    ->statsInit();
  $multi_stats = [];
  $full_keys = [];
  foreach ($keys as $key => $cid) {
    $full_key = $this
      ->key($cid);
    $full_keys[$cid] = $full_key;
    if ($collect_stats) {
      $multi_stats[$full_key] = FALSE;
    }
  }
  $results = $this->memcache
    ->get($full_keys);

  // If $results is FALSE, convert it to an empty array.
  if (!$results) {
    $results = [];
  }
  if ($collect_stats) {
    foreach ($multi_stats as $key => $value) {
      $multi_stats[$key] = isset($results[$key]) ? TRUE : FALSE;
    }
  }

  // Convert the full keys back to the cid.
  $cid_results = [];

  // Order isn't guaranteed, so ensure the return order matches that
  // requested. So base the results on the order of the full_keys, as they
  // reflect the order of the $cids passed in.
  foreach (array_intersect($full_keys, array_keys($results)) as $cid => $full_key) {
    $cid_results[$cid] = $results[$full_key];
  }
  if ($collect_stats) {
    $this
      ->statsWrite('getMulti', 'cache', $multi_stats);
  }
  return $cid_results;
}