/** * Persists a cache item immediately. * * @param CacheItemInterface $item * The cache item to save. * * @return bool * True if the item was successfully persisted. False if there was an error. */ public function save(CacheItemInterface $item) { if (!$item instanceof CacheItem) { throw new InvalidArgumentException('$item must be an instance of ' . CacheItem::class); } $this->validateKey($item->getKey()); try { $options = false; $expiration = $item->getExpiration(); // @todo I can't see any way to set the TTL on an individual item except by temporarily overwriting the // option on the storage adapter. Not sure if all storage adapters will support this... if ($expiration instanceof DateTime) { $options = $this->storage->getOptions(); $new = clone $options; $interval = $expiration->diff(new DateTime(), true); $new->setTtl($interval->format('%s')); $this->storage->setOptions($new); } $saved = $this->storage->setItem($item->getKey(), $item->get()); if ($options) { $this->storage->setOptions($options); } } catch (Exception\InvalidArgumentException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } catch (Exception\ExceptionInterface $e) { throw new CacheException($e->getMessage(), $e->getCode(), $e); } return $saved; }
/** * {@inheritdoc} */ public function save(CacheItemInterface $item) { if (!$item instanceof Item) { throw new InvalidArgumentException('MatthiasMullie\\Scrapbook\\Psr6\\Pool can only save MatthiasMullie\\Scrapbook\\Psr6\\Item objects'); } if (!$item->hasChanged()) { /* * If the item didn't change, we don't have to re-save it. We do, * however, need to check if the item actually holds a value: if it * does, it should be considered "saved" (even though nothing has * changed, the value for this key is in cache) and if it doesn't, * well then nothing is in cache. */ return $item->get() !== null; } $expire = $item->getExpiration(); return $this->store->set($item->getKey(), $item->get(), $expire); }
private function doSave(CacheItemInterface $item) { $now = new DateTime(); $ttl = $item->getExpiration()->format('U') - $now->format('U'); if ($ttl < 0) { return false; } return $this->provider->save($item->getKey(), $item, $ttl); }
/** * Persists a cache item immediately. * * @param CacheItemInterface $item * The cache item to save. * * @return static * The invoked object. */ public function save(CacheItemInterface $item) { return $this->getDriver()->save($item->getKey(), $item->get(), $item->getExpiration()); }
/** * {@inheritdoc} */ public function save(CacheItemInterface $item) { $storageKey = $this->createKey($item->getKey()); $ttl = $this->ttl; if ($item instanceof CacheItem) { $expiration = $item->getExpiration()->getTimestamp(); $time = time(); if ($expiration > $time) { $ttl = $expiration - $time; } } return $this->setDataToStorage($storageKey, $item->get(), $ttl); }
public function save(PsrCacheInterface $item) { $this->getDriver()->set($item->getKey(), $item->get(), $item->getExpiration()); return $this; }
/** * {@inheritdoc} */ public function save(CacheItemInterface $item) { if (!$item instanceof Item) { throw new InvalidArgumentException('MatthiasMullie\\Scrapbook\\Psr6\\Pool can only save MatthiasMullie\\Scrapbook\\Psr6\\Item objects'); } $expire = $item->getExpiration(); if ($expire !== 0 && $expire < time()) { // already expired: don't even save it return true; } return $this->store->set($item->getKey(), $item->get(), $expire); }
/** * Persists a cache item immediately. * * @param CacheItemInterface $item The cache item to save. * * @author Benjamin Carl <*****@*****.**> * * @return $this The invoked object. */ public function save(CacheItemInterface $item) { $this->create($item->getKey(), $item->get(), $item->getExpiration()); return $this; }