protected function DatabaseBackend::checksumTags

Returns the sum total of validations for a given set of tags.

Parameters

array $tags: Array of flat tags.

Return value

int Sum of all invalidations.

See also

Drupal\Core\Cache\DatabaseBackend::flattenTags()

2 calls to DatabaseBackend::checksumTags()
DatabaseBackend::doSet in drupal/core/lib/Drupal/Core/Cache/DatabaseBackend.php
Actually set the cache.
DatabaseBackend::prepareItem in drupal/core/lib/Drupal/Core/Cache/DatabaseBackend.php
Prepares a cached item.

File

drupal/core/lib/Drupal/Core/Cache/DatabaseBackend.php, line 365
Definition of Drupal\Core\Cache\DatabaseBackend.

Class

DatabaseBackend
Defines a default cache implementation.

Namespace

Drupal\Core\Cache

Code

protected function checksumTags($flat_tags) {
  $tag_cache =& drupal_static('Drupal\\Core\\Cache\\CacheBackendInterface::tagCache', array());
  $checksum = array(
    'invalidations' => 0,
    'deletions' => 0,
  );
  $query_tags = array_diff($flat_tags, array_keys($tag_cache));
  if ($query_tags) {
    $db_tags = $this->connection
      ->query('SELECT tag, invalidations, deletions FROM {cache_tags} WHERE tag IN (:tags)', array(
      ':tags' => $query_tags,
    ))
      ->fetchAllAssoc('tag', \PDO::FETCH_ASSOC);
    $tag_cache += $db_tags;

    // Fill static cache with empty objects for tags not found in the database.
    $tag_cache += array_fill_keys(array_diff($query_tags, array_keys($db_tags)), $checksum);
  }
  foreach ($flat_tags as $tag) {
    $checksum['invalidations'] += $tag_cache[$tag]['invalidations'];
    $checksum['deletions'] += $tag_cache[$tag]['deletions'];
  }
  return $checksum;
}