当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkPHP实现MemCache分布式缓存功能

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-21 15:04:25 浏览: 评论:0 

这篇文章主要介绍了thinkPHP实现MemCache分布式缓存功能的方法,结合实例形式分析了thinkPHP通过修改CacheMemcache.class.php源文件实现分布式缓存功能的具体实现技巧,需要的朋友可以参考下。

本文实例讲述了thinkPHP实现MemCache分布式缓存功能,分享给大家供大家参考,具体如下:

两天在研究MemCache分布式缓存的问题时,发现ThinkPHP其实并不支持分布式缓存功能,这可以从官方提供的CacheMemcache.class.php文件中看到:

  1. if(emptyempty($options)) { 
  2.   $options = array 
  3.   ( 
  4.     'host' => '127.0.0.1'
  5.     'port' => 11211, 
  6.     'timeout' => false, 
  7.     'persistent' => false 
  8.   ); 
  9. $func = $options['persistent'] ? 'pconnect' : 'connect'
  10. $this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME'); 
  11. $this->handler = new Memcache; 
  12. $this->connected = $options['timeout'] === false ? 
  13. $this->handler->$func($options['host'], $options['port']) : 
  14. $this->handler->$func($options['host'], $options['port'], $options['timeout']); 

不过不要紧,稍微修改下就行了,即

  1. if(emptyempty($options)) { 
  2.   $options = array 
  3.   ( 
  4.     'timeout' => false, 
  5.     'persistent' => false, 
  6.     'servers'=>array
  7.       array('ip'=>'127.0.0.1','port'=>11211), 
  8.       array('ip'=>'127.0.0.1','port'=>11212), 
  9.       array('ip'=>'202.116.32.4','port'=>11211), 
  10.     ), 
  11.   ); 
  12. //分布式处理函数 
  13. $func="addServer"
  14. $this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME'); 
  15. $this->handler = new Memcache; 
  16. if($options['timeout']===false) 
  17.   foreach($options['servers'as $server
  18.   { 
  19.     $this->handler->$func($server['ip'],$server['port']); 
  20.   } 

闲来无事,于是就在本机上启动了两个MemCache服务器,顺手编写了一段简单的监控代码(隔一段时间自动刷新一次),进行测试,如果发现服务器运行不正常,则使用PhpMailer自动发送一封Email到管理员邮箱,测试结果表明,两台Memcache服务器均工作正常,而另外一台虚假的服务器当然是无法连接到的,哈哈,够简单的吧

Tags: MemCache thinkPHP分布式缓存

分享到: