查看: 7036|回复: 0
打印 上一主题 下一主题

PHP5 像使用数组一样使用Memcache

[复制链接]
跳转到指定楼层
1#
发表于 2009-7-26 22:55:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
作者:张立冰

出处: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'));
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表