1 <?php 2 3 namespace Kevinrob\GuzzleCache\Storage; 4 5 use Doctrine\Common\Cache\Cache; 6 use Kevinrob\GuzzleCache\CacheEntry; 7 8 class CompressedDoctrineCacheStorage implements CacheStorageInterface 9 { 10 /** 11 * @var Cache 12 */ 13 protected $cache; 14 15 /** 16 * @param Cache $cache 17 */ 18 public function __construct(Cache $cache) 19 { 20 $this->cache = $cache; 21 } 22 23 /** 24 * {@inheritdoc} 25 */ 26 public function fetch($key) 27 { 28 try { 29 $cache = unserialize(gzuncompress($this->cache->fetch($key))); 30 if ($cache instanceof CacheEntry) { 31 return $cache; 32 } 33 } catch (\Exception $ignored) { 34 return; 35 } 36 37 return; 38 } 39 40 /** 41 * {@inheritdoc} 42 */ 43 public function save($key, CacheEntry $data) 44 { 45 try { 46 $lifeTime = $data->getTTL(); 47 if ($lifeTime >= 0) { 48 return $this->cache->save( 49 $key, 50 gzcompress(serialize($data)), 51 $lifeTime 52 ); 53 } 54 } catch (\Exception $ignored) { 55 // No fail if we can't save it the storage 56 } 57 58 return false; 59 } 60 61 /** 62 * {@inheritdoc} 63 */ 64 public function delete($key) 65 { 66 try { 67 return $this->cache->delete($key); 68 } catch (\Exception $ignored) { 69 // Don't fail if we can't delete it 70 } 71 72 return false; 73 } 74 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body