thinkPHP实现MemCache分布式缓存功能


Posted in PHP onMarch 23, 2016

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

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

if(empty($options)) {
  $options = array
  (
    'host' => '127.0.0.1',
    'port' => 11211,
    'timeout' => false,
    'persistent' => false
  );
}
$func = $options['persistent'] ? 'pconnect' : 'connect';
$this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME');
$this->handler = new Memcache;
$this->connected = $options['timeout'] === false ?
$this->handler->$func($options['host'], $options['port']) :
$this->handler->$func($options['host'], $options['port'], $options['timeout']);

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

if(empty($options)) {
  $options = array
  (
    'timeout' => false,
    'persistent' => false,
    'servers'=>array(
      array('ip'=>'127.0.0.1','port'=>11211),
      array('ip'=>'127.0.0.1','port'=>11212),
      array('ip'=>'202.116.32.4','port'=>11211),
    ),
  );
}
//分布式处理函数
$func="addServer";
$this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME');
$this->handler = new Memcache;
if($options['timeout']===false)
{
  foreach($options['servers'] as $server)
  {
    $this->handler->$func($server['ip'],$server['port']);
  }
}

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中的正规表达式(二)
Oct 09 PHP
php 正则表达式小结
Aug 31 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
php实现简单洗牌算法
Jun 18 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
理解PHP中的stdClass类
Apr 18 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
ThinkPHP项目分组配置方法分析
Mar 23 #PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 #PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 #PHP
ThinkPHP路由机制简介
Mar 23 #PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 #PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 #PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 #PHP
You might like
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
纯php生成随机密码
2015/10/30 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python3实现购物车功能
2018/04/18 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
造型师求职自荐信
2013/09/27 职场文书
生物制药毕业生自荐信
2013/10/16 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
考试诚信承诺书
2014/05/23 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
python获取带有返回值的多线程
2022/05/02 Python