protected function MemcacheBackend::valid in Zircon Profile 8
Same name and namespace in other branches
- 8.0 modules/memcache/src/MemcacheBackend.php \Drupal\memcache\MemcacheBackend::valid()
1 call to MemcacheBackend::valid()
- MemcacheBackend::getMultiple in modules/memcache/src/MemcacheBackend.php
- Returns data from the persistent cache when given an array of cache IDs.
File
- modules/memcache/src/MemcacheBackend.php, line 116
- Contains \Drupal\memcache\MemcacheBackend.
Class
- MemcacheBackend
- Defines a Memcache cache backend.
Namespace
Drupal\memcache
Code
protected function valid($cid, $cache) {
$lock_key = "memcache_{$cid}:{$this->bin}";
$cache->valid = FALSE;
if ($cache) {
if (isset($cache->expire) && $cache->expire != CacheBackendInterface::CACHE_PERMANENT && $cache->expire <= REQUEST_TIME) {
if ($this->settings
->get('memcache_stampede_protection', FALSE)) {
if (!$this->lock
->acquire($lock_key, $this->settings
->get('memcache_stampede_semaphore', 15))) {
$cache->valid = TRUE;
}
}
}
else {
$cache->valid = TRUE;
}
}
else {
if ($this->settings
->get('memcache_stampede_protection', FALSE) && !$this->lock
->acquire($lock_key, $this->settings
->get('memcache_stampede_semaphore', 15))) {
$this->lockCount++;
if ($this->lockCount <= $this->settings
->get('memcache_stampede_wait_limit', 3)) {
$this->lock
->wait($lock_key, $this->settings
->get('memcache_stampede_wait_time', 5));
$cache = $this
->get($cid);
}
}
}
if (!$this->checksumProvider
->isValid($cache->checksum, $cache->tags)) {
$cache->valid = FALSE;
}
return (bool) $cache->valid;
}