Hoa central
Memcache.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Cache\Backend;
38 
39 use Hoa\Cache;
40 
51 class Memcache extends Backend
52 {
58  protected $_memcache = null;
59 
60 
61 
69  public function __construct(Array $parameters = [])
70  {
71  if (!extension_loaded('memcache')) {
72  throw new Cache\Exception(
73  'Memcache module extension is not loaded on server.',
74  0
75  );
76  }
77 
78  parent::__construct($parameters);
79 
80  return;
81  }
82 
89  public function store($data)
90  {
91  $this->setMemcache();
92  $this->clean();
93 
94  if (true === $this->_parameters->getParameter('serialize_content')) {
95  $data = serialize($data);
96  }
97 
98  $flag =
99  $this->_parameters->getParameter('memcache.compress.active')
100  ? MEMCACHE_COMPRESSED
101  : 0;
102  $lifetime = $this->_parameters->getParameter('lifetime');
103 
104  if ($lifetime > 2592000) {
105  // 30 days.
106  $lifetime = 2592000;
107  }
108 
109  return $this->_memcache->set(
110  $this->getIdMd5(),
111  $data,
112  $flag,
113  $lifetime
114  );
115  }
116 
122  public function load()
123  {
124  $this->setMemcache();
125  $this->clean();
126 
127  $content = $this->_memcache->get($this->getIdMd5());
128 
129  if (true === $this->_parameters->getParameter('serialize_content')) {
130  $content = unserialize($content);
131  }
132 
133  return $content;
134  }
135 
144  public function clean($lifetime = Cache::CLEAN_ALL)
145  {
146  $this->setMemcache();
147 
148  if ($lifetime != Cache::CLEAN_ALL) {
149  throw new Cache\Exception(
150  'Only \Hoa\Cache::CLEAN_ALL constant is supported by ' .
151  'Memcache backend.',
152  1
153  );
154  }
155 
156  if (false === @$this->_memcache->flush()) {
157  throw new Cache\Exception(
158  'Flush all existing items on Memcache server %s failed.',
159  2,
160  $this->_parameters->getParameter('memcache.database.host')
161  );
162  }
163 
164  return;
165  }
166 
172  public function remove()
173  {
174  $this->setMemcache();
175  $this->_memcache->delete($this->getIdMd5());
176 
177  return;
178  }
179 
185  protected function setMemcache()
186  {
187  if (is_object($this->_memcache)) {
188  return true;
189  }
190 
191  $this->_memcache = new \Memcache();
192  $this->_memcache->addServer(
193  $this->_parameters->getParameter('memcache.database.host'),
194  $this->_parameters->getParameter('memcache.database.port'),
195  $this->_parameters->getParameter('memcache.database.persistent')
196  );
197 
198  return true;
199  }
200 
206  public function __destruct()
207  {
208  if ($this->_memcache !== null) {
209  $this->_memcache->close();
210  unset($this->_memcache);
211  }
212 
213  return;
214  }
215 }
clean($lifetime=Cache::CLEAN_ALL)
Definition: Memcache.php:144
const CLEAN_ALL
Definition: Cache.php:55
$content
Definition: Hoa.php:119
__construct(Array $parameters=[])
Definition: Memcache.php:69