Browse Source
Memcache caching, #18
Memcache caching, #18
git-svn-id: svn+ssh://code.netmonsters.ru/svn/majestic/branches/evo@120 4cb57b5f-5bbd-dd11-951b-001d605cbbc5master
pzinovkin
15 years ago
6 changed files with 287 additions and 21 deletions
-
10Config.php
-
86cache/Cache.php
-
37cache/Cacher.php
-
130cache/MemcacheCache.php
-
14model/Db.php
-
23model/Model.php
@ -0,0 +1,86 @@ |
|||||
|
<?php |
||||
|
/** |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage Cache |
||||
|
* @since 2010-03-04 |
||||
|
* @version SVN: $Id$ |
||||
|
* @filesource $URL$ |
||||
|
*/ |
||||
|
|
||||
|
abstract class Cache |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* Add an item to the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $value |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function add($key, $value, $expire = 0); |
||||
|
|
||||
|
/** |
||||
|
* Decrement item's value |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $decrement |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function decrement($key, $decrement = 1); |
||||
|
|
||||
|
/** |
||||
|
* Delete item from the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $value |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function del($key); |
||||
|
|
||||
|
/** |
||||
|
* Flush all existing items |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function flush(); |
||||
|
|
||||
|
/** |
||||
|
* Retrieve item from the cache |
||||
|
* |
||||
|
* @param mixed $key |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
abstract public function get($key); |
||||
|
|
||||
|
/** |
||||
|
* Increment item's value |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $increment |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function increment($key, $increment = 1); |
||||
|
|
||||
|
/** |
||||
|
* Replace value of the existing item |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $var |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function replace($key, $value, $expire = 0); |
||||
|
|
||||
|
/** |
||||
|
* Store data in the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $value |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
abstract public function set($key, $value, $expire = 0); |
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
<?php |
||||
|
/** |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage Cache |
||||
|
* @since 2010-03-04 |
||||
|
* @version SVN: $Id$ |
||||
|
* @filesource $URL$ |
||||
|
*/ |
||||
|
|
||||
|
class Cacher |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* Initialized cachers |
||||
|
* |
||||
|
* @var array |
||||
|
*/ |
||||
|
static protected $caches = array(); |
||||
|
|
||||
|
|
||||
|
static public function get($cacher, $config = null) |
||||
|
{ |
||||
|
if (!isset(self::$caches[$cacher])) { |
||||
|
if (!$config) { |
||||
|
$config = Config::get($cacher); |
||||
|
} |
||||
|
$cache = new $cacher($config); |
||||
|
if (!$cache instanceof Cache) { |
||||
|
throw new Exception('Cache driver "' . $cacher . '" must extends Cache'); |
||||
|
} |
||||
|
self::$caches[$cacher] = $cache; |
||||
|
} |
||||
|
return self::$caches[$cacher]; |
||||
|
} |
||||
|
} |
@ -0,0 +1,130 @@ |
|||||
|
<?php |
||||
|
/** |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage Cache |
||||
|
* @since 2010-03-04 |
||||
|
* @version SVN: $Id$ |
||||
|
* @filesource $URL$ |
||||
|
*/ |
||||
|
|
||||
|
class MemcacheCache extends Cache |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* @var Memcache |
||||
|
*/ |
||||
|
protected $connection = null; |
||||
|
|
||||
|
public function __construct($config) |
||||
|
{ |
||||
|
$this->connection = new Memcache(); |
||||
|
|
||||
|
$required = array('hostname', 'port'); |
||||
|
foreach ($config as $c) { |
||||
|
foreach ($required as $option) { |
||||
|
if (!isset($c[$option])) { |
||||
|
throw new Exception('Configuration must have a "' . $option . '".'); |
||||
|
} |
||||
|
} |
||||
|
$this->connection->addServer($c['hostname'], $c['port']); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add an item to the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $value |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function add($key, $value, $expire = 0) |
||||
|
{ |
||||
|
return $this->connection->add($key, $value, null, $expire); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Decrement item's value |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $decrement |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function decrement($key, $decrement = 1) |
||||
|
{ |
||||
|
return $this->connection->decrement($key, $decrement); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Delete item from the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $value |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function del($key) |
||||
|
{ |
||||
|
return $this->connection->delete($key); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Flush all existing items |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function flush() |
||||
|
{ |
||||
|
return $this->connection->flush(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Retrieve item from the cache |
||||
|
* |
||||
|
* @param mixed $key |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public function get($key) |
||||
|
{ |
||||
|
return $this->connection->get($key); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Increment item's value |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param int $increment |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function increment($key, $increment = 1) |
||||
|
{ |
||||
|
return $this->connection->increment($key, $increment); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Replace value of the existing item |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $var |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function replace($key, $value, $expire = 0) |
||||
|
{ |
||||
|
return $this->connection->replace($key, $value, null, $expire); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Store data in the cache |
||||
|
* |
||||
|
* @param string $key |
||||
|
* @param mixed $value |
||||
|
* @param int $expire |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function set($key, $value, $expire = 0) |
||||
|
{ |
||||
|
return $this->connection->set($key, $value, null, $expire); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue