[Cache] give 100ms before starting the expiration countdown
This commit is contained in:
parent
766162c4c7
commit
ba63e181fd
@ -76,7 +76,7 @@ abstract class AbstractAdapter implements AdapterInterface, CacheInterface, Logg
|
|||||||
$key = (string) $key;
|
$key = (string) $key;
|
||||||
if (null === $item->expiry) {
|
if (null === $item->expiry) {
|
||||||
$ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
|
$ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
|
||||||
} elseif (0 >= $ttl = (int) ($item->expiry - $now)) {
|
} elseif (0 >= $ttl = (int) (0.1 + $item->expiry - $now)) {
|
||||||
$expiredIds[] = $getId($key);
|
$expiredIds[] = $getId($key);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ abstract class AbstractAdapter implements AdapterInterface, CacheInterface, Logg
|
|||||||
unset($metadata[CacheItem::METADATA_TAGS]);
|
unset($metadata[CacheItem::METADATA_TAGS]);
|
||||||
}
|
}
|
||||||
// For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
|
// For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
|
||||||
$byLifetime[$ttl][$getId($key)] = $metadata ? ["\x9D".pack('VN', (int) $metadata[CacheItem::METADATA_EXPIRY] - CacheItem::METADATA_EXPIRY_OFFSET, $metadata[CacheItem::METADATA_CTIME])."\x5F" => $item->value] : $item->value;
|
$byLifetime[$ttl][$getId($key)] = $metadata ? ["\x9D".pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME])."\x5F" => $item->value] : $item->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $byLifetime;
|
return $byLifetime;
|
||||||
|
@ -82,7 +82,7 @@ abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagA
|
|||||||
$key = (string) $key;
|
$key = (string) $key;
|
||||||
if (null === $item->expiry) {
|
if (null === $item->expiry) {
|
||||||
$ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
|
$ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
|
||||||
} elseif (0 >= $ttl = (int) ($item->expiry - $now)) {
|
} elseif (0 >= $ttl = (int) (0.1 + $item->expiry - $now)) {
|
||||||
$expiredIds[] = $getId($key);
|
$expiredIds[] = $getId($key);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -96,7 +96,7 @@ abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagA
|
|||||||
|
|
||||||
if ($metadata) {
|
if ($metadata) {
|
||||||
// For compactness, expiry and creation duration are packed, using magic numbers as separators
|
// For compactness, expiry and creation duration are packed, using magic numbers as separators
|
||||||
$value['meta'] = pack('VN', (int) $metadata[CacheItem::METADATA_EXPIRY] - CacheItem::METADATA_EXPIRY_OFFSET, $metadata[CacheItem::METADATA_CTIME]);
|
$value['meta'] = pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract tag changes, these should be removed from values in doSave()
|
// Extract tag changes, these should be removed from values in doSave()
|
||||||
|
@ -84,7 +84,7 @@ class ProxyAdapter implements AdapterInterface, CacheInterface, PruneableInterfa
|
|||||||
}
|
}
|
||||||
if ($metadata) {
|
if ($metadata) {
|
||||||
// For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
|
// For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
|
||||||
$item["\0*\0value"] = ["\x9D".pack('VN', (int) $metadata[CacheItem::METADATA_EXPIRY] - CacheItem::METADATA_EXPIRY_OFFSET, $metadata[CacheItem::METADATA_CTIME])."\x5F" => $item["\0*\0value"]];
|
$item["\0*\0value"] = ["\x9D".pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME])."\x5F" => $item["\0*\0value"]];
|
||||||
}
|
}
|
||||||
$innerItem->set($item["\0*\0value"]);
|
$innerItem->set($item["\0*\0value"]);
|
||||||
$innerItem->expiresAt(null !== $item["\0*\0expiry"] ? \DateTime::createFromFormat('U.u', sprintf('%.6f', $item["\0*\0expiry"])) : null);
|
$innerItem->expiresAt(null !== $item["\0*\0expiry"] ? \DateTime::createFromFormat('U.u', sprintf('%.6f', $item["\0*\0expiry"])) : null);
|
||||||
|
@ -169,7 +169,7 @@ class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterf
|
|||||||
unset($metadata[CacheItem::METADATA_TAGS]);
|
unset($metadata[CacheItem::METADATA_TAGS]);
|
||||||
|
|
||||||
if ($metadata) {
|
if ($metadata) {
|
||||||
$values[$key] = ["\x9D".pack('VN', (int) $metadata[CacheItem::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET, $metadata[CacheItem::METADATA_CTIME])."\x5F" => $values[$key]];
|
$values[$key] = ["\x9D".pack('VN', (int) (0.1 + $metadata[CacheItem::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[CacheItem::METADATA_CTIME])."\x5F" => $values[$key]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ abstract class AdapterTestCase extends CachePoolTest
|
|||||||
$cache->deleteItem('foo');
|
$cache->deleteItem('foo');
|
||||||
$cache->get('foo', function ($item) {
|
$cache->get('foo', function ($item) {
|
||||||
$item->expiresAfter(10);
|
$item->expiresAfter(10);
|
||||||
sleep(1);
|
usleep(999000);
|
||||||
|
|
||||||
return 'bar';
|
return 'bar';
|
||||||
});
|
});
|
||||||
|
@ -61,7 +61,7 @@ trait ContractsTrait
|
|||||||
static function (CacheItem $item, float $startTime, ?array &$metadata) {
|
static function (CacheItem $item, float $startTime, ?array &$metadata) {
|
||||||
if ($item->expiry > $endTime = microtime(true)) {
|
if ($item->expiry > $endTime = microtime(true)) {
|
||||||
$item->newMetadata[CacheItem::METADATA_EXPIRY] = $metadata[CacheItem::METADATA_EXPIRY] = $item->expiry;
|
$item->newMetadata[CacheItem::METADATA_EXPIRY] = $metadata[CacheItem::METADATA_EXPIRY] = $item->expiry;
|
||||||
$item->newMetadata[CacheItem::METADATA_CTIME] = $metadata[CacheItem::METADATA_CTIME] = 1000 * (int) ($endTime - $startTime);
|
$item->newMetadata[CacheItem::METADATA_CTIME] = $metadata[CacheItem::METADATA_CTIME] = (int) ceil(1000 * ($endTime - $startTime));
|
||||||
} else {
|
} else {
|
||||||
unset($metadata[CacheItem::METADATA_EXPIRY], $metadata[CacheItem::METADATA_CTIME]);
|
unset($metadata[CacheItem::METADATA_EXPIRY], $metadata[CacheItem::METADATA_CTIME]);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user