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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
中篇:安装及配置PHP
Dec 13 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
PHP abstract 抽象类定义与用法示例
May 29 PHP
Yii框架页面渲染操作实例详解
Jul 19 PHP
laravel实现于语言包的完美切换方法
Sep 29 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
thinkphp5 路由分发原理
Mar 18 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下使用无限生命期Session的方法
2007/03/16 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
Javascript 面试题随笔
2011/03/31 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python中标准模块importlib详解
2017/04/16 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
python打开使用的方法
2019/09/30 Python
python计算无向图节点度的实例代码
2019/11/22 Python
销售人员自我评价
2014/02/01 职场文书
玲玲的画教学反思
2014/02/04 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
博士生专家推荐信
2015/03/25 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python