expert1 发表于 2011-12-22 08:54

利用php获取memcache的运行状态

<DIV>断断续续的看几天php,借着其他语言基础,写了个memcache状态抓取代码</DIV>
<DIV>
<DIV class=codeText id=codeText>
<OL class=dp-css style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; MARGIN: 0px 1px 0px 0px; PADDING-TOP: 5px">
<LI><SPAN style="COLOR: #000000"><SPAN style="COLOR: #0000cc">&lt;</SPAN><SPAN style="COLOR: #0000cc">?</SPAN><SPAN style="COLOR: #0000ff">php</SPAN><BR></LI>
<LI><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">mem</SPAN> <SPAN style="COLOR: #0000cc">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN> Memcache<SPAN style="COLOR: #0000cc">;</SPAN> #new关键字生成一个对象<BR></LI>
<LI><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">mem</SPAN><SPAN style="COLOR: #0000cc">-</SPAN><SPAN style="COLOR: #0000cc">&gt;</SPAN>connect<SPAN style="COLOR: #0000cc">(</SPAN><SPAN style="COLOR: #ff00ff">"127.0.0.1"</SPAN><SPAN style="COLOR: #0000cc">,</SPAN>11211<SPAN style="COLOR: #0000cc">)</SPAN><SPAN style="COLOR: #0000cc">; #-&gt;调用类方法</SPAN><BR></LI>
<LI><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">status</SPAN><SPAN style="COLOR: #0000cc">=</SPAN><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">mem</SPAN><SPAN style="COLOR: #0000cc">-</SPAN><SPAN style="COLOR: #0000cc">&gt;</SPAN>getstats<SPAN style="COLOR: #0000cc">(</SPAN><SPAN style="COLOR: #0000cc">)</SPAN><SPAN style="COLOR: #0000cc">;</SPAN><BR></LI>
<LI><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #0000cc">(</SPAN><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">status</SPAN> <SPAN style="COLOR: #0000ff">as</SPAN> <SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">key</SPAN><SPAN style="COLOR: #0000cc">=</SPAN><SPAN style="COLOR: #0000cc">&gt;</SPAN><SPAN style="COLOR: #0000ff">$</SPAN><SPAN style="COLOR: #008080">value</SPAN><SPAN style="COLOR: #0000cc">)</SPAN><BR></LI>
<LI><SPAN style="COLOR: #ff0000">print</SPAN> <SPAN style="COLOR: #ff00ff">"$key $value\n"</SPAN><SPAN style="COLOR: #0000cc">;</SPAN></LI>
<LI><SPAN style="COLOR: #0000cc">$mem-&gt;close();</SPAN><BR></LI>
<LI><SPAN style="COLOR: #0000cc">?</SPAN><SPAN style="COLOR: #0000cc">&gt;</SPAN></SPAN></LI></OL></DIV></DIV>
<DIV>没想到memcache在php里被当做Class了,用new生成一个对象,调用connect方法连接Memcached server,然后getstatus得到状态,最后foreach打印arrry,结果如下:(看来这个memcache很闲啊,几乎什么都没做)</DIV>
<DIV>pid&nbsp; 27890<BR>uptime&nbsp; 4222<BR>time&nbsp; 1313133923<BR>version&nbsp; 1.4.6<BR>libevent&nbsp; 2.0.12-stable<BR>pointer_size&nbsp; 64<BR>rusage_user&nbsp; 0.001999<BR>rusage_system&nbsp; 0.006998<BR>curr_connections&nbsp; 5<BR>total_connections&nbsp; 20<BR>connection_structures&nbsp; 6<BR>cmd_get&nbsp; 15<BR>cmd_set&nbsp; 15<BR>cmd_flush&nbsp; 0<BR>get_hits&nbsp; 15<BR>get_misses&nbsp; 0<BR>delete_misses&nbsp; 0<BR>delete_hits&nbsp; 0<BR>incr_misses&nbsp; 0<BR>incr_hits&nbsp; 0<BR>decr_misses&nbsp; 0<BR>decr_hits&nbsp; 0<BR>cas_misses&nbsp; 0<BR>cas_hits&nbsp; 0<BR>cas_badval&nbsp; 0<BR>auth_cmds&nbsp; 0<BR>auth_errors&nbsp; 0<BR>bytes_read&nbsp; 683<BR>bytes_written&nbsp; 11330<BR>limit_maxbytes&nbsp; 134217728<BR>accepting_conns&nbsp; 1<BR>listen_disabled_num&nbsp; 0<BR>threads&nbsp; 4<BR>conn_yields&nbsp; 0<BR>bytes&nbsp; 80<BR>curr_items&nbsp; 1<BR>total_items&nbsp; 15<BR>evictions&nbsp; 0<BR>reclaimed&nbsp; 7</DIV>
<DIV>要了解memcache相关的类和函数,还得$path/bin/php --re memcache看一下。</DIV>
<DIV>&nbsp;</DIV>
<DIV>看来php和python在OOP上还是有区别的,python生成一个对象只需要:</DIV>
<DIV>&nbsp;</DIV>
<DIV>newobject=classname() #可能需要传递参数</DIV>
<DIV>newobject.method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #调用方法。</DIV>
页: [1]
查看完整版本: 利用php获取memcache的运行状态