XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
CacheMemcache.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
9 class CacheMemcache extends CacheBase
10 {
15  var $Memcache;
17 
24  function getInstance($url)
25  {
26  if(!$GLOBALS['__CacheMemcache__'])
27  {
28  $GLOBALS['__CacheMemcache__'] = new CacheMemcache($url);
29  }
30  return $GLOBALS['__CacheMemcache__'];
31  }
32 
40  function __construct($url)
41  {
42  //$config['url'] = array('memcache://localhost:11211');
43  $config['url'] = is_array($url) ? $url : array($url);
44  if(class_exists('Memcached'))
45  {
46  $this->Memcache = new Memcached;
47  $this->SelectedExtension = 'Memcached';
48  }
49  elseif(class_exists('Memcache'))
50  {
51  $this->Memcache = new Memcache;
52  $this->SelectedExtension = 'Memcache';
53  }
54  else
55  {
56  return false;
57  }
58 
59  foreach($config['url'] as $url)
60  {
61  $info = parse_url($url);
62  $this->Memcache->addServer($info['host'], $info['port']);
63  }
64  }
65 
71  function isSupport()
72  {
73  if(isset($GLOBALS['XE_MEMCACHE_SUPPORT']))
74  {
75  return $GLOBALS['XE_MEMCACHE_SUPPORT'];
76  }
77  if($this->SelectedExtension === 'Memcached')
78  {
79  return $GLOBALS['XE_MEMCACHE_SUPPORT'] = $this->Memcache->set('xe', 'xe', 1);
80  }
81  elseif($this->SelectedExtension === 'Memcache')
82  {
83  return $GLOBALS['XE_MEMCACHE_SUPPORT'] = $this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1);
84  }
85  else
86  {
87  return $GLOBALS['XE_MEMCACHE_SUPPORT'] = false;
88  }
89  }
90 
97  function getKey($key)
98  {
99  return md5(_XE_PATH_ . $key);
100  }
101 
119  function put($key, $buff, $valid_time = 0)
120  {
121  if($valid_time == 0)
122  {
124  }
125  if($this->SelectedExtension === 'Memcached')
126  {
127  return $this->Memcache->set($this->getKey($key), array($_SERVER['REQUEST_TIME'], $buff), $valid_time);
128  }
129  else
130  {
131  return $this->Memcache->set($this->getKey($key), array($_SERVER['REQUEST_TIME'], $buff), MEMCACHE_COMPRESSED, $valid_time);
132  }
133  }
134 
143  function isValid($key, $modified_time = 0)
144  {
145  $_key = $this->getKey($key);
146 
147  $obj = $this->Memcache->get($_key);
148  if(!$obj || !is_array($obj))
149  {
150  return false;
151  }
152  unset($obj[1]);
153 
154  if($modified_time > 0 && $modified_time > $obj[0])
155  {
156  $this->_delete($_key);
157  return false;
158  }
159 
160  return true;
161  }
162 
173  function get($key, $modified_time = 0)
174  {
175  $_key = $this->getKey($key);
176  $obj = $this->Memcache->get($_key);
177  if(!$obj || !is_array($obj))
178  {
179  return false;
180  }
181 
182  if($modified_time > 0 && $modified_time > $obj[0])
183  {
184  $this->_delete($_key);
185  return false;
186  }
187 
188  unset($obj[0]);
189 
190  return $obj[1];
191  }
192 
201  function delete($key)
202  {
203  $_key = $this->getKey($key);
204  $this->_delete($_key);
205  }
206 
214  function _delete($_key)
215  {
216  $this->Memcache->delete($_key);
217  }
218 
228  function truncate()
229  {
230  return $this->Memcache->flush();
231  }
232 
233 }
234 /* End of file CacheMemcache.class.php */
235 /* Location: ./classes/cache/CacheMemcache.class.php */
isValid($key, $modified_time=0)
$obj
Definition: ko.install.php:262
if(file_exists(_XE_PATH_. 'config/config.user.inc.php')) if(!defined('__DEBUG__')) if(!defined('__DEBUG_OUTPUT__')) if(!defined('__DEBUG_PROTECT__')) if(!defined('__DEBUG_PROTECT_IP__')) if(!defined('__DEBUG_DB_OUTPUT__')) if(!defined('__LOG_SLOW_QUERY__')) if(!defined('__LOG_SLOW_TRIGGER__')) if(!defined('__LOG_SLOW_ADDON__')) if(!defined('__LOG_SLOW_WIDGET__')) if(!defined('__DEBUG_QUERY__')) if(!defined('__OB_GZHANDLER_ENABLE__')) if(!defined('__ENABLE_PHPUNIT_TEST__')) if(!defined('__PROXY_SERVER__')) if(!defined('__ERROR_LOG__')) if(!defined('__DISABLE_DEFAULT_CSS__')) if(!defined('__AUTO_OPCACHE_INVALIDATE__')) if((__DEBUG_OUTPUT__==2)&&version_compare(PHP_VERSION, '6.0.0')===-1) if(version_compare(PHP_VERSION, '5.3.0') >=0) $GLOBALS['__xe_autoload_file_map']
Definition: config.inc.php:324
put($key, $buff, $valid_time=0)
const _XE_PATH_
Definition: config.inc.php:49