78 lines
1.7 KiB
PHP
78 lines
1.7 KiB
PHP
<?php namespace Laravel;
|
|
|
|
class Memcached {
|
|
|
|
/**
|
|
* The Memcached connection instance.
|
|
*
|
|
* @var Memcache
|
|
*/
|
|
protected static $instance;
|
|
|
|
/**
|
|
* Get the Memcached connection instance.
|
|
*
|
|
* This connection will be managed as a singleton instance so that only
|
|
* one connection to the Memcached severs will be established.
|
|
*
|
|
* @return Memcache
|
|
*/
|
|
public static function instance()
|
|
{
|
|
if (is_null(static::$instance))
|
|
{
|
|
static::$instance = static::connect(Config::get('cache.memcached'));
|
|
}
|
|
|
|
return static::$instance;
|
|
}
|
|
|
|
/**
|
|
* Create a new Memcached connection instance.
|
|
*
|
|
* The configuration array passed to this method should be an array of
|
|
* server hosts / ports, like those defined in the cache configuration
|
|
* file.
|
|
*
|
|
* <code>
|
|
* // Create a new localhost Memcached connection instance.
|
|
* $memcache = Memcached::connect(array('host' => '127.0.0.1', 'port' => 11211));
|
|
* </code>
|
|
*
|
|
* @param array $servers
|
|
* @return Memcache
|
|
*/
|
|
public static function connect($servers)
|
|
{
|
|
$memcache = new \Memcache;
|
|
|
|
foreach ($servers as $server)
|
|
{
|
|
$memcache->addServer($server['host'], $server['port'], true, $server['weight']);
|
|
}
|
|
|
|
if ($memcache->getVersion() === false)
|
|
{
|
|
throw new \RuntimeException('Could not establish memcached connection.');
|
|
}
|
|
|
|
return $memcache;
|
|
}
|
|
|
|
/**
|
|
* Dynamically pass all other method calls to the Memcache instance.
|
|
*
|
|
* <code>
|
|
* // Get an item from the Memcache instance
|
|
* $name = Memcached::get('name');
|
|
*
|
|
* // Store data on the Memcache server
|
|
* Memcached::set('name', 'Taylor');
|
|
* </code>
|
|
*/
|
|
public static function __callStatic($method, $parameters)
|
|
{
|
|
return call_user_func_array(array(static::instance(), $method), $parameters);
|
|
}
|
|
|
|
} |