设为首页 收藏本站
查看: 427|回复: 0

[经验分享] PHP5 像使用数组一样使用Memcache

[复制链接]

尚未签到

发表于 2015-11-17 12:45:54 | 显示全部楼层 |阅读模式
  原贴:http://www.libing.name/2008/03/13/php5-memcache-array.html


PHP5 像使用数组一样使用Memcache

3月 13th, 2008
  作者:张立冰
出处: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 Header
  • PHP中的执行命令和管道及进程间通讯
  • Random Tips
  • 将MySQL数据映射到Memcached

Posted by libing
Filed in PHP

6 Responses to “PHP5 像使用数组一样使用Memcache”



  • xddxz Says:
    3月 13th, 2008 at 3:23 下午   太专业了…. 还有那个 svn的地址能不能发给我到 163.com ,我连不上。


  • xddxz Says:
    3月 14th, 2008 at 10:02 上午   试一下看支不支持html


  • libing Says:
    3月 15th, 2008 at 11:50 上午   什么意思啊?发给你到163.com?


  • jdormmt Says:
    4月 1st, 2008 at 3:39 下午   cool site  for my mind its very goodPlease, send your abuse here!!!  send.your.abuse.here@gmail.com


  • bw Says:
    5月 8th, 2008 at 10:02 上午   不错,要是php能把memcache内置就好了


  • libing Says:
    5月 8th, 2008 at 12:48 下午   PHP的一些扩展(APC、EA、XCACHE)等可以做差不多的memcache的工作,但是不能做分布式……

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140326-1-1.html 上篇帖子: PHP进阶篇之53个要点提高PHP编程效率 下篇帖子: HBuilder 配置Python、PHP开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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