php当中的memcache应用

所需环境:下载路径 http://www.tuicool.com/articles/Iveimy

php 5.3.3 , apache 2.2.7, mysql 5.5.8

解压Memcached_1.2.5文档,cmd下执行memcached.exe -d install

将php5.3_vc6_memcachedll文档解压,将php_memcache.dll文件复制到php安装目录的ext文件目录中。

然后在php.ini 当中填上这句话:extension="php_memcache.dll"

在phpinfo()下查看,是否引用了memcache扩展。

1、测试代码:

  1. <?php  
  2. //连接  
  3. $mem = new Memcache;  
  4. $mem->connect("127.0.0.1", 11211);  
  5. //connect:建立一个到memcached服务端的连接,使用方法 Memcache::connect()打开的连接在脚本执行结束后会自动关闭。当然,你也可以使用方法 Memcache::close()来主动关闭
  6. host

    memcached服务端监听主机地址。这个参数也可以指定为其他传输方式比如unix:///path/to/memcached.sock 来使用Unix域socket,在这种方式下,port参数必须设置为0

    port

    memcached服务端监听端口。当使用Unix域socket的时候要设置此参数为0

    timeout

    连接持续(超时)时间,单位秒。默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。


  7.   
  8. 2、保存数据  
  9. $mem->set('key1', 'This is first value', 0, 60);  
  10.   1:要设置值的key,
  11.   2:要存储的值,字符串、数字、数组可以直接存储,
  12.   4:保存时间:0表示永久,其他是秒单位

  13. 3、获取数据
  14. $val = $mem->get('key1');  
  15. echo "Get key1 value: " . $val ."<br />";  
  16.   
  17. 4、替换数据  
  18. $mem->replace('key1', 'This is replace value', 0, 60);  
  19. $val = $mem->get('key1');  
  20. echo "Get key1 value: " . $val . "<br />";  
  21.   
  22. 5、保存数组  
  23. $arr = array('aaa', 'bbb', 'ccc', 'ddd');  
  24. $mem->set('key2', $arr, 0, 60);  
  25. $val2 = $mem->get('key2');  
  26. echo "Get key2 value: ";  
  27. print_r($val2);  
  28. echo "<br />";  
  29.   
  30. 6、删除数据  
  31. $mem->delete('key1');  
  32. $val = $mem->get('key1');  
  33. echo "Get key1 value: " . $val . "<br />";  
  34.   
  35. 7、清除所有数据  
  36. $mem->flush();  
  37. $val2 = $mem->get('key2');  
  38. echo "Get key2 value: ";  
  39. print_r($val2);  
  40. echo "<br />";  
  41. //关闭连接  
  42. $mem->close();  
  43.   
  44. $memcachehost = '192.168.10.1';  
  45. $memcacheport = 11211;  
  46. $memcachelife = 60;  
  47. $memcache = new Memcache;  
  48. $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");  
  49. $query="select * from user limit 10";  
  50. $key=md5($query);  
  51. if(!$memcache->get($key))  
  52. {  
  53.         $conn=mysql_connect("192.168.30.1","root","passwd");  
  54.         mysql_select_db(users);  
  55.         $result=mysql_query($query);  
  56.         while ($row=mysql_fetch_assoc($result))  
  57.         {  
  58.             $arr[]=$row;  
  59.         }  
  60.         $f = 'db';  
  61.         $memcache->add($key,serialize($arr),0,30);  
  62.         $data = $arr ;  
  63. }  
  64. else{  
  65.         $f = 'mem';  
  66.     $data_mem=$memcache->get($key);  
  67.     $data = unserialize($data_mem);  
  68. }  
  69. echo $f;  
  70. echo "";  
  71. //print_r($data);  
  72. foreach($data as $a)  
  73. {  
  74.         echo $a[user_id]._.$a[email];  
  75.         echo "";  
  76. }  
  77. ?>  
2、新闻系统的应用:

 

 
  1. //==============memcache  
  2. $memcachehost = '127.0.0.1';  
  3. $memcacheport = 11211;  
  4. $memcachelife = 60;  
  5. $memcache = new Memcache;  
  6. $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");  
  7. //==============新闻  
  8.   
  9.  $sql="SELECT id,title,left(title,16) as biaoti,date_time FROM `p_newsbase` where shenhe='1' order by id DESC limit 7 ";  
  10.  $query=$db->query($sql);  
  11.  $key=md5($query);  
  12.  while($row_news=$db->fetch_array($query)){  
  13.     $str=$row_news['biaoti'].$db->time_out($row_news['date_time']);  
  14.     $sm_news[]=array("name"=>$str,"title"=>$row_news['title'],"id"=>$row_news['id'],"date_time"=>$row_news['date_time']);  
  15.   
  16.  }  
  17.  if(!$memcache->get($key)){  
  18.     $memcache->add($key,serialize($sm_news),0,$memcachelife);  
  19.  }else{  
  20.     $data_mem=$memcache->get($key);  
  21.     $sm_news = unserialize($data_mem);  
  22.  }  
  23.  $smarty->assign("sm_news",$sm_news); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值