您好,欢迎访问一九零五行业门户网

PHP5 像使用数组一样使用Memcache

作者:张立冰 出处:http://www.libing.name/2008/03/13/php5-memcache-array.html 我们经常使用memcache来做数据的缓存,比如大的分布式的应用的会话数据的保存等,每次使用memcache进行数据的操作都必须依赖于memcache提供的api,对象的创建,方法的调用等,虽然
作者:张立冰
出处:http://www.libing.name/2008/03/13/php5-memcache-array.html
我们经常使用memcache来做数据的缓存,比如大的分布式的应用的会话数据的保存等,每次使用memcache进行数据的操作都必须依赖于memcache提供的api,对象的创建,方法的调用等,虽然就几个api,使用起来也挺方便的,但再没有像使用数组这么方便来使用你的memcache了.
at phpclasses:http://www.phpclasses.org/browse/package/4071.html
在php5里,可以方便的帮我们实现了(基于spl).几小时的工作,可能有些小bug,欢迎反馈.:)
/**
* mem.class.php -- class used to access memcache server as array.
*
* written by roast (roast_at_php_dot_net).
*
* feel free to email me with questions/bugs.
* if you find this useful, would be great to hear from you.
*
* version 1.0 -
*
* changes:
* - first release.
*
* example:
*
* include(mem.class.php);
*
* //global variable $_mem
*
* $_mem['dd'] = roast; //memcache::set
* unset($_mem['dd']); //memcache::delete
*
* var_dump($_mem['dd']);
*
* notes:
* - protect keys of memcache: _host/_port/_compress/_expire.
* - php version 5.0+
*/
class _mem implements arrayaccess
{
private $_data = array();
private $_handler = false;
public $_host;
public $_port = 11211;
public $_compress = false;
public $_expire = 30;
public function __construct($host,$port = 11211)
{
$this->_host = $host;
$this->_port = $port;
$this->_handler = new memcache;
if (!$this->_handler->connect($host,$port))
$this->_handler = false;
}
public function offsetexists($offset) {}
public function offsetunset($offset)
{
$this->_handler->delete($offset);
unset($this->_data[$offset]);
}
public function offsetget($offset)
{
if (!$this->_handler)
return false;
echo 'get';
if (isset($this->_data[$offset]))
return $this->_data[$offset];
else
return $this->_handler->get($offset);
}
public function offsetset($offset, $value)
{
if (!$this->_handler)
return false;
switch ($offset)
{
case '_host': $this->_host = $value; break;
case '_port': $this->_port = $value; break;
case '_expire': $this->_expire = $value;break;
case '_compress': $this->_host = $value; break;
default:
if (emptyempty($value) && $value != '0')
$this->_handler->delete($offset);
else
$this->_handler->set($offset,$value,$this->_compress,$this->_expire);
}
$this->_data[$offest] = $value;
}
}
$_mem = new _mem('10.210.71.51');
举个小例子:
include_once('mem.class.php') ;
$_mem['dd'] = roast;
unset($_mem['dd']); //delete a memcache value
var_dump($_mem['dd']);
echo $_mem->_host;
$_mem['_host'] = '192.168.1.1'; //set the memcache server host
echo $_mem->_host;
$_mem['roast'] = '张立冰';
$memcache = new memcache;
$memcache->connect('10.210.71.51', 11211) or die (could not connect);
var_dump($memcache->get('roast'));
您可能还喜欢将mysql数据映射到memcached中download file with cache-control headerphp中的执行命令和管道及进程间通讯random tips将mysql数据映射到memcached
其它类似信息

推荐信息