<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.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>http://www.jackxiang.com/post//</link>
<title><![CDATA[memcached安装+php使用手记,赋原程序！]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 13 Oct 2008 06:23:58 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<div class="code">&lt;?php<br/>error_reporting(E_ALL);<br/>define (&#039;DEF_MC_PREFIX&#039;, &quot;app10&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MC的前缀<br/>include_once &#039;../libs/sinainterface.class.php&#039;;<br/>//include_once &#039;../../libs/applogger.class.php&#039;;<br/>require_once &#039;../libs/mysqlpdo.class.php&#039;;<br/>require_once &#039;../config/db_config1.php&#039;;<br/>require_once &#039;../config/commstr1.php&#039;;<br/>$test3 = new orderlist(0);<br/>$test3-&gt;set_memcache_values(1);<br/>print_r($test3-&gt;get_memcache_values(1));<br/>?&gt;<br/><br/>&lt;?php<br/>class OrderList<br/>&#123;<br/>&nbsp;&nbsp;private $uid;//自己的uid号，取好友要用到<br/>&nbsp;&nbsp;private $obj_mc;<br/>&nbsp;&nbsp;private $mcop = true;//假如有了memcache就是true，否则没有true，不写缓存<br/>&nbsp;&nbsp;public $int_all_order_count;<br/>&nbsp;&nbsp;private $int_friend_order_count;<br/>&nbsp;&nbsp;private $return_param;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function __construct($uid)<br/>&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;uid = $uid;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;s_id = APP_SID;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;obj_db = new mysqlpdo ( );<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;mcop) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$re = $this-&gt;ConnectMc ( $mobj );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($re) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;obj_mc = $mobj;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;mcop = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public function&nbsp;&nbsp;get_memcache_values($int_page)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($this-&gt;mcop)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr_subject = $this-&gt;obj_mc-&gt;get ( DEF_MC_PREFIX . APP_SID . &#039;_&#039; . $int_page );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr_acount&nbsp;&nbsp;= $this-&gt;obj_mc-&gt;get(DEF_MC_PREFIX . &quot;_c&quot; .APP_SID);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($arr_subject&amp;&amp;$arr_acount)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;int_all_order_count = $arr_acount ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $arr_subject;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取数据库和调用set_memcache_values()进行赋值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//$this-&gt;obj_mc-&gt;set(DEF_MC_PREFIX . &quot;_c&quot;.APP_SID, $arr_count &#91;0&#93; &#91;&#039;p_count&#039;&#93; , 0 ,60*60*12); //对memcache赋值。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function set_memcache_values($int_page)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr_subject=array(&quot;uid&quot; =&gt; &quot;1212&quot;, &quot;content&quot; =&gt; &quot;this ia a test by xiangdong...&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;mcop)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;//把循环出来的$arr_subject放入MC变量（MC有规则的含$i,以后便于取）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;obj_mc-&gt;set ( DEF_MC_PREFIX . APP_SID . &#039;_&#039; . $int_page, $arr_subject, 0 ,60 * 60 * 12 );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public function ConnectMc(&amp;$mcobj)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;global $MC_CONFIG;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $MC_CONFIG;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$server = explode ( &quot;:&quot;, $MC_CONFIG );<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mcobj = new Memcache ( );<br/>&nbsp;&nbsp;&nbsp;&nbsp;$re = $mcobj-&gt;connect ( $server &#91;0&#93;, $server &#91;1&#93; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (! $re)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;<br/><br/>&lt;?php<br/><br/><br/>?&gt;</div><br/>参考：http://blog.csdn.net/chinalinuxzend/archive/2007/10/07/1813599.aspx<br/><br/><br/>memcached安装+php使用手记<br/>本文简要介绍一下安装的情况,以及PHP模块memcache使用情况：<br/>提要：<br/>１。安装memcached服务器端<br/>２。安装php对memcache支持模块<br/>３。使用memcache情况，计数器、数据压缩<br/>４。Memcache内存的更新清理(delete flush)<br/>５。内存超量的测试(set)<br/>１。安装memcached服务器端<br/>memcached安装说明(北南南北的站)：<br/>http://www.linuxsir.org/main/?q=node/184 <br/>注意的是：如果你安装过程中出现错误，请看看是不是有模块没装：<br/>autoconf<br/>zlib (压缩数据用)<br/><br/>２。安装php对memcache支持模块<br/>PHP老家：<br/>http://cn.php.net/manual/zh/ref.memcache.php<br/>(PHP 4.3.3 or newer is required to use the memcache extension. 难道，4.3.3都装上了吗？好像没有吧，用4.4.4好像都要另外装的)<br/><br/>３。使用memcache情况，计数器、数据压缩<br/> 使用情况一：统计<br/><br/><div class="code">&lt;?php<br/>//访问统计<br/>$memcache = new Memcache;<br/>$memcache-&gt;connect(’localhost’, 11211) or die (&quot;Could not connect&quot;);<br/>if($s=$memcache-&gt;get(’a’)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$s=$s+1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$memcache-&gt;set(’a’,$s);<br/>&#125;<br/>else<br/>$memcache-&gt;set(’a’,1);<br/>echo ’访问结果为：’.$s;<br/>?&gt;<br/>其实我们可以用increment方法代替上面的做法<br/>&lt;?php<br/>$memcache = new Memcache;<br/>$memcache-&gt;connect(’localhost’, 11211) or die (&quot;Could not connect&quot;);<br/><br/>if($s=$memcache-&gt;increment(’a’,1)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $s;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#125;<br/>else<br/>$memcache-&gt;set(’a’,1);<br/>?&gt;</div><br/> <br/>数据压缩： <br/><br/><div class="code">&lt;?php<br/>$memcache = new Memcache;<br/>$memcache-&gt;connect(’localhost’, 11211) or die (&quot;Could not connect&quot;);<br/>$test=(str_repeat(’jetwong’,100000));<br/>$memcache-&gt;set(’b’,($test));<br/>?&gt;</div>使用压缩：<br/><br/><div class="code">&lt;?php<br/>$memcache = new Memcache;<br/>$memcache-&gt;connect(’localhost’, 11211) or die (&quot;Could not connect&quot;);<br/>$test=(str_repeat(’jetwong’,100000));<br/>$memcache-&gt;set(’b’,($test),MEMCACHE_COMPRESSED);<br/>?&gt;</div><br/><br/>使用情况说明：<br/>前台比较<br/>&nbsp;&nbsp;<br/>目前内存<br/>bytes<br/>&nbsp;&nbsp;<br/>总共读取<br/>bytes_read<br/>&nbsp;&nbsp;<br/>总共写入<br/>bytes_written<br/>压缩前<br/>&nbsp;&nbsp;<br/>700085<br/>&nbsp;&nbsp;<br/>700081<br/>&nbsp;&nbsp;<br/>416<br/>压缩后<br/>&nbsp;&nbsp;<br/>1131<br/>&nbsp;&nbsp;<br/>1125<br/>&nbsp;&nbsp;<br/>13<br/>可能看到压缩后明显占用内存少了不少<br/> <br/>４。Memcache内存的更新清理(delete flush)<br/><br/> <br/> <br/>５。内存超量的测试(set)<br/> 我们把内存设为2M<br/>./memcached -d -m 2 -p 11211 -u root<br/> <br/><br/><div class="code">&lt;?php<br/>$memcache = new Memcache;<br/>$memcache-&gt;connect(’localhost’, 11211) or die (&quot;Could not connect&quot;);<br/><br/>//600K左右<br/>$test1= str_repeat(’jetlee’,100000);<br/>//600K左右<br/>$test2= str_repeat(’jetlee’,100000);<br/>//600K左右<br/>$test3= str_repeat(’李连杰’,200000);<br/>//600K左右<br/>$test4= str_repeat(’连杰李’,100000);<br/>//200K<br/>$test5= file_get_contents(’http://img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG’);<br/>$test6= file_get_contents(’http://img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg’);<br/><br/>for($i=1;$i&lt;=6;$i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$j=’test’.$i;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($memcache-&gt;set($j,$$j)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $j.’-&gt;设置成功&lt;br&gt;’;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$status = $memcache-&gt;getStats();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo ’内存:’.$status&#91;’bytes’&#93;.’&lt;br&gt;’;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $j.’-&gt;设置失败&lt;br&gt;’;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;</div>执行结果：<br/>test1-&gt;设置成功<br/>内存:600042<br/>test2-&gt;设置成功<br/>内存:1200084<br/>test3-&gt;设置失败<br/>test4-&gt;设置成功<br/>内存:1200084<br/>test5-&gt;设置失败<br/>test6-&gt;设置失败<br/> <br/>刚好印证我们的计算，不过20万的repeat为什么会失败，不是太了解，，，，，，<br/> <br/>总结：<br/>示例：<br/><br/><div class="code">&lt;?<br/>//设置篇<br/>if($data = $memcache-&gt;get(’k’,$v)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//显示我们的数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = get_from_database; //得到数据源<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!$memcache-&gt;set(’k’,$data), MEMCACHE_COMPRESSED) //开始设置<br/>&nbsp;&nbsp;&nbsp;&nbsp;log();&nbsp;&nbsp;&nbsp;&nbsp;//不成功,记录失败信息&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#125;<br/>?&gt;</div>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] memcached安装+php使用手记,赋原程序！]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>