foreach ($this->keysToPersist
as $offset =>
$persist) { if ($persist) { $data[$offset] =
$this->storage
[$offset];
} } if (empty($data) &&
empty($this->keysToRemove
)) { return;
} // Lock cache writes to help avoid stampedes.
$cid =
$this->
getCid();
$lock_name =
$this->
normalizeLockName($cid . ':' . __CLASS__
);
if (!
$lock ||
$this->lock->
acquire($lock_name)) { // Set and delete operations invalidate the cache item. Try to also load
// an eventually invalidated cache entry, only update an invalidated cache
// entry if the creation date did not change as this could result in an
// inconsistent cache.
if ($cache =
$this->cache->
get($cid,
$this->cacheInvalidated
)) { if ($this->cacheInvalidated &&
$cache->created !=
$this->cacheCreated
) { // We have invalidated the cache in this request and got a different
// cache entry. Do not attempt to overwrite data that might have been
// changed in a different request. We'll let the cache rebuild in
// later requests.