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
-
31model/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