MemcachedQ消息服务器机制
转载请注明出处!作者:心灵地带
尝试了解消息服务器是一个学习的过程,刚开始对消息服务器的了解始终感觉很陌生,只知道把一个东西扔进去,剩下的什么也不用管,但我的问题是,如何扔进去,然后如何取出来,这些才是关键,个人的理解怎是有限,先罗列一点准备文档吧!
MemcachedQ官方网址http://memcachedb.org/memcacheq/
里面介绍MemcachedQ的安装方法和使用方法,具体我就不介绍,大家可以去看看,
安装过程中要安装两个软件,同样罗列一下:
Oracle Berkeley DB
http://www.oracle.com/database/berkeley-db/db/index.html
libevent
http://monkey.org/~provos/libevent/
先下载相关软件,按照步骤安装,过程非常简单
准备工作非常重要,有必要了解更多的知识,但显然我做得不够,我只是粗略的谈谈我的看法,
消息服务的机制图:
记住:进去与出来,how?
队列:先进先出原则
实现方法:
一,实现数据连接,产生一个MemcachedQ的连接
$memcache_obj = memcache_connect('memcacheq_host', 21201);
二,将数据入列,处理数据
memcache_set($memcache_obj, 'demoqueue1', 'message body here', 0, 0);
三,取数据,将处理好的数据取出
memcache_get($memcache_obj, 'demoqueue1');
四,关闭连接
memcache_close($memcache_obj);
这是一种过程式的方法,使用面向对象的方法将更加好。
memcache_connect就是一个memcached的对象连接。
面向对象方法如下:
一,获取连接
memcacheq = new memcache ( );
$memcacheq->addserver ('memcacheq_host', 21201);
$this->memcacheQ = $ memcacheq;
二,将数据发送到消息服务器队列
$this->memcacheQ->set ('demoqueue1', 'message body here', 0, 0 );
三,从消息服务器取数据
$message = $this->memcacheQ->get ( 'demoqueue1');
[精彩开始]
当我们获取到$message后,就是说我们获取到了队列,允许我们行动!我们就可以调用我们自己的方法,这才是我们所需要的部分,实现我们所需要的功能,如:
If($message) Clasname->classfunction($message)
比方增加我的贴子,那么调用就从这里实现
$threadService->addMyThread($message)
问题1:如何将各种类($threadService)传递进去,调用不同的方法(addMyThread)?又是一个精彩的部分[可了解一下代码,将非常实用,感觉收获不少]
问题2:$message为啥?就是我们传进去要处理的数据。又是一个精彩的部分,同上!
四,关闭连接
Unset($this-> memcacheQ);
可以拿来做一个简单的测试!
熟悉Memcached 的是很容易入手的,入列就是一个set,取出就是一个get
注意:
1,测试很关键
2,连接有效性,保持持久连接
3,去除不必要的变量unset
其实相关的情况还是比较复杂,至少我是这么认为的,显然个人水平有限,具体查看相关代码!大家可从MESSAGE的SVN分支获取
这是我个人的理解,是否正确还需要大虾们完善!也算是抛砖引玉吧!
没有评论:
发表评论