<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]MemcacheQ 消息队列的安装，PHP结合memcacheq消息队列解决并发问题，在shell上连接、增、删、查运行的MQ队列服务。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Cache与Store]]></category>
<pubDate>Mon, 10 Mar 2014 08:44:44 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：关于队列，Linux底层已有数据结构支持，也有Erlang写的rabbitQ，这个MemcacheQ和张宴兄弟的httpsqs一样的基于libevent的http接口加上BerkeleyDB（现在好你没更新了吧？），应该还是相当稳定的，有时间安个试试。<br/><br/>安装实践的过程如下，Libevent已经在我的虚拟机里安过了，不再描述，安装来源：http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html<br/>开始安装：<br/>（1）berkeley-db:<br/>http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz<br/>~/software/db-5.3.15/build_unix# ../dist/configure --prefix=/usr/local/webserver/berkeleyDB &amp;&amp; make &amp;&amp; make install<br/>（2）memcacheq:<br/>http://code.google.com/p/memcacheq/downloads/list<br/>~/software/memcacheq-0.2.0# ./configure --prefix=/usr/local/webserver/memcacheq --enable-threads --with-libevent --with-bdb=/usr/local/webserver/berkelyDB<br/>#-j 8<br/>make -j 8<br/>make install<br/>注意：在没有安装BerkeleyDB的情况下,会提示( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);<br/>It is normal verbose message. If you dont want to keep it, you can start without &#039;-v&#039;.<br/><br/>make &amp;&amp; make install<br/> 测试是否安装成功：<br/>/usr/local/webserver/memcacheq/bin/memcacheq -h<br/>如果报错：<br/>memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory<br/>解决方法：<br/>ln -s /usr/local/webserver/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so<br/>ldconfig<br/>之前可先根据实际安装路径配置链接库：<br/>可以修改/etc/ld.so.conf，增加BDB和libevent的库路径（建议）<br/>/usr/local/BerkeleyDB.5.0/lib<br/>/usr/local/lib<br/>也可以临时export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.5.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH<br/><br/>（3）启动服务:<br/>/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /data0/memcacheq/data -N -R -v -L 1024 -B 1024&nbsp;&nbsp;/data/logs/mq_error.log 2&gt;&amp;1<br/> (/data0/memcacheq/data 必须自己创建)<br/>mkdir -p&nbsp;&nbsp;/data0/memcacheq/data<br/>chmod -R 777 /data0/memcacheq/data<br/><br/>（4）检查是否启动成功：<br/>ps -aux &#124;grep memcacheq<br/><br/>（5）增加到开机启动:<br/>编辑 /etc/rc.local<br/>增加以下内容：<br/>/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /var/memcacheq/data -N -R -v -L 1024 -B 1024&nbsp;&nbsp;/data/logs/mq_error.log 2&gt;&amp;1<br/><br/>（6）参数不对容易出现&quot;qstats dump thread: a qstats is dump.&quot;,请加上参数v：<br/>（It is normal verbose message. If you dont want to keep it, you can start without &#039;-v&#039;.）<br/> nohup /usr/local/memcacheq/bin/memcacheq -d -u www -p61611 -r -H /usr/local/memcacheq/data -N -v -L 1024 -B 1023 &gt; /usr/local/memcacheq/logs/mq_error.log 2&gt;&amp;1<br/><br/>MemcacheQ使用以及与PHP连接 实验之shell下telnet操作该queque:<br/>实践来源，MemcacheQ使用以及与PHP连接：(里面有shell操作队列的方法，很适用！)<br/>http://ifxoxo.com/use-memcacheq.html<br/>开始实践：<br/>1）set 增加一个信息到队列的尾部<br/>telnet 127.0.0.1 11212<br/>set &lt;queue name&gt; &lt;flags&gt; 0 &lt;message_len&gt;<br/>&lt;put your message body here&gt;<br/>STORED<br/>#示例<br/>#插入第一条数据<br/>set test_queue 0 0 13<br/>first_message<br/>STORED<br/>#插入第二条数据<br/>set test_queue 0 0 8<br/>message2<br/>STORED<br/>实践如下：<br/><textarea name="code" class="C" rows="15" cols="100">
root@192.168.0.6:~# telnet 127.0.0.1 11212
set test_queue 0 0 13
first_message
STORED
stats queue
STAT test_queue 1/0
END
get test_queue
VALUE test_queue 0 13
first_message
stats queue
STAT test_queue 1/1
delete test_queue
DELETED
stats queue
END
</textarea><br/>注：信息不能大于message_len。大于message_len会报错.message_len以字节为单位。<br/><br/>#超出长度时示例<br/>set test_queue 0 0 2<br/>tes<br/>CLIENT_ERROR bad data chunk<br/>ERROR<br/>#你超出message_len范围后会报错，错误的数据集。<br/>2）查看队列：stats queue<br/>3）get 从队列的头部查询一条信息并销毁：<br/>get &lt;queue name&gt;<br/>VALUE &lt;queue name&gt; &lt;flags&gt; &lt;message_len&gt;<br/>&lt;your message body will come here&gt;<br/>END<br/>#示例：<br/>get test_queue<br/>VALUE test_queue 0 13<br/>first_message<br/>END<br/>#可以看出是查询的第一个插入的信息。<br/>4)delete 删除队列:<br/>delete &lt;queue name&gt;<br/>#示例：<br/>delete test_queue<br/>DELETED<br/>#此时再查看队列状态：<br/>stats queue<br/>END<br/>#已经删除了。<br/>———————与php 连接———————<br/>注意：和php连接，需要事先安装memcache的php扩展，如未安装，可以点击： linux下安装PHP扩展：Memcache<br/> linux下安装PHP扩展：Memcache的文章来源：http://ifxoxo.com/memcache-install.html&nbsp;&nbsp;其实就是安装memcache的扩展，如果网站以前有连接memcache，现在就不用安了。<br/> PHP示例：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/* connect to memcached server */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$memcache_obj = memcache_connect(&#039;127.0.0.1&#039;, 11212);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* append a message to queue */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
memcache_set($memcache_obj, &#039;demoqueue1&#039;, &#039;message body here&#039;, 0, 0); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* consume a message from &#039;demoqueue1&#039; */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
memcache_get($memcache_obj, &#039;demoqueue1&#039;);//可注释掉后再从上面的shell通过telnet上看
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
memcache_close($memcache_obj);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
?&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</textarea><br/>root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php<br/>注释：memcache_get($memcache_obj, &#039;demoqueue1&#039;);并执行后：<br/>root@192.168.0.6:/data0/htdocs/blog# telnet 127.0.0.1 11212<br/>Trying 127.0.0.1...<br/>Connected to 127.0.0.1.<br/>Escape character is &#039;^]&#039;.<br/>get demoqueue1<br/>VALUE demoqueue1 0 17<br/>反过来，设置shell后，用php扩展去获取(注意用shell操作时最后的数字长度最好大于写的字符长度，否则报错：CLIENT_ERROR bad data chunk。)：<br/><textarea name="code" class="C" rows="15" cols="100">
root@192.168.0.6:~# telnet 127.0.0.1 11212
set test_queue 0 0 2
tes
CLIENT_ERROR bad data chunk
ERROR
set test_queue 0 0 2
te 
STORED
set demoqueue1 0 0 2
te 
</textarea><br/><br/>PHP代码获取如下：<br/>root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php<br/>te<br/>________________摘自其他项目团队的php代码_______________<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
require &#039;memcache_cache.adp.php&#039;;

$config = array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;servers&#039;=&gt;&#039;mcq_host:mcq_port&#039;, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;pconnect&#039;=&gt;false, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;keyPre&#039;=&gt;&#039;pre_&#039;, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;zip&#039;=&gt;0 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);

$mcqObj = new memcache_cache();
$mcqObj-&gt;adp_init($config);

$key = &#039;test&#039;;
$values = array(1, 2, 3, 4, 5);

foreach($values as $value)&#123;
&nbsp;&nbsp;$mcqObj-&gt;set($key, $value);
&#125;

var_dump($mcqObj-&gt;get($key));

$mcqObj-&gt;close();

</textarea><br/>_____________________________________________________<br/>罗列安装使用的Url如下：<br/>http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html<br/>http://ifxoxo.com/use-memcacheq.html<br/>来自：http://www.com133.com/56<br/>HttpSQS:<br/>http://blog.s135.com/httpsqs/<br/><br/>PHP下的使用方法：http://memcachedb.org/memcacheq/<br/>sina微博队列memcacheq 服务安装与原理: <br/>http://blog.163.com/song_0803/blog/static/46097597201131510533947/
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]MemcacheQ 消息队列的安装，PHP结合memcacheq消息队列解决并发问题，在shell上连接、增、删、查运行的MQ队列服务。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>