return $this->
deleteItem($key);
} private function doGet(CacheItemPoolInterface
$pool, string
$key, callable
$callback, ?float
$beta, array &
$metadata = null, LoggerInterface
$logger = null
): mixed
{ if (0 >
$beta ??= 1.0
) { throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.',
static::
class,
$beta)) extends \InvalidArgumentException
implements InvalidArgumentException
{};
} $item =
$pool->
getItem($key);
$recompute = !
$item->
isHit() || \INF ===
$beta;
$metadata =
$item instanceof ItemInterface ?
$item->
getMetadata() :
[];
if (!
$recompute &&
$metadata) { $expiry =
$metadata[ItemInterface::METADATA_EXPIRY
] ?? false;
$ctime =
$metadata[ItemInterface::METADATA_CTIME
] ?? false;
if ($recompute =
$ctime &&
$expiry &&
$expiry <= ($now =
microtime(true
)) -
$ctime / 1000 *
$beta *
log(random_int(1, \PHP_INT_MAX
) / \PHP_INT_MAX
)) { // force applying defaultLifetime to expiry
$item->
expiresAt(null
);
$logger?->
info('Item "{key}" elected for early recomputation {delta}s before its expiration',
[ 'key' =>
$key,