/**
  * {@inheritdoc}
  */
 protected function storeItemInCache(CacheItemInterface $item, $ttl)
 {
     $key = $this->getHierarchyKey($item->getKey());
     $data = serialize([true, $item->get(), $item->getTags()]);
     if ($ttl === null || $ttl === 0) {
         return $this->cache->set($key, $data);
     }
     return $this->cache->setex($key, $ttl, $data);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function save(ItemInterface $item)
 {
     $ttl = $item->getTtlInSecond();
     $this->_tags = $item->getTags();
     $item->setHit(true);
     $success = $this->cache_adapter->save($item->get(), $item->getKey(), $this->_tags, is_null($ttl) ? 0 : $ttl);
     $item->setHit($success);
     return $this;
 }
 /**
  * {@inheritdoc}
  * @throws \InvalidArgumentException
  * @throws \League\Flysystem\FileNotFoundException
  * @throws \League\Flysystem\FileExistsException
  */
 protected function storeItemInCache(CacheItemInterface $item, $ttl)
 {
     $file = $this->getFilePath($item->getKey());
     if ($this->filesystem->has($file)) {
         $this->filesystem->delete($file);
     }
     $tags = [];
     if ($item instanceof TaggableItemInterface) {
         $tags = $item->getTags();
     }
     return $this->filesystem->write($file, serialize([$ttl === null ? null : time() + $ttl, $item->get(), $tags]));
 }
Example #4
0
 /**
  * @param \Psr\Cache\CacheItemInterface $item
  * @return mixed
  * @throws \InvalidArgumentException
  */
 protected function driverWrite(CacheItemInterface $item)
 {
     /**
      * Check for Cross-Driver type confusion
      */
     if ($item instanceof Item) {
         try {
             $result = (array) $this->getCollection()->update(['_id' => $item->getKey()], ['$set' => [self::DRIVER_EDATE_WRAPPER_INDEX => $item->getTtl() > 0 ? new MongoDate(time() + $item->getTtl()) : new MongoDate(time()), self::DRIVER_DATA_WRAPPER_INDEX => new MongoBinData($this->encode($item->get()), MongoBinData::BYTE_ARRAY), self::DRIVER_TAGS_WRAPPER_INDEX => new MongoBinData($this->encode($item->getTags()), MongoBinData::BYTE_ARRAY)]], ['upsert' => true, 'multiple' => false]);
         } catch (MongoCursorException $e) {
             return false;
         }
         return isset($result['ok']) ? $result['ok'] == 1 : true;
     } else {
         throw new \InvalidArgumentException('Cross-Driver type confusion detected');
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function storeItemInCache(CacheItemInterface $item, $ttl)
 {
     $tags = [];
     if ($item instanceof TaggableItemInterface) {
         $tags = $item->getTags();
     }
     $data = serialize([$ttl === null ? null : time() + $ttl, $item->get(), $tags]);
     $file = $this->getFilePath($item->getKey());
     if ($this->filesystem->has($file)) {
         // Update file if it exists
         return $this->filesystem->update($file, $data);
     }
     try {
         return $this->filesystem->write($file, $data);
     } catch (FileExistsException $e) {
         // To handle issues when/if race conditions occurs, we try to update here.
         return $this->filesystem->update($file, $data);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function storeItemInCache(CacheItemInterface $item, $ttl)
 {
     if ($ttl === null) {
         $ttl = 0;
     }
     $tags = [];
     if ($item instanceof TaggableItemInterface) {
         $tags = $item->getTags();
     }
     $data = serialize([true, $item->get(), $tags]);
     return $this->cache->save($item->getKey(), $data, $ttl);
 }