热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » PHP5 像使用数组一样使用Memcache

PHP5 像使用数组一样使用Memcache

论坛链接
  • PHP5 像使用数组一样使用Memcache
  • 发布时间:2009-07-26 22:55:06    浏览数:7062    发布者:superadmin    设置字体【   
作者:张立冰

出处: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 valuevar_dump($_MEM['dd']); echo $_MEM->_host;$_MEM['_host'] = '192.168.1.1'; //set the memcache server hostecho $_MEM->_host; $_MEM['roast'] = '张立冰';$memcache = new Memcache;$memcache->connect('10.210.71.51', 11211) or die ("Could not connect");var_dump($memcache->get('roast'));

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 valuevar_dump($_MEM['dd']); echo $_MEM->_host;$_MEM['_host'] = '192.168.1.1'; //set the memcache server hostecho $_MEM->_host; $_MEM['roast'] = '张立冰';$memcache = new Memcache;$memcache->connect('10.210.71.51', 11211) or die ("Could not connect");var_dump($memcache->get('roast'));
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理