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的curl实现get和post的代码
Aug 23 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 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抓即时股票信息
2006/10/09 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
9个比较实用的php代码片段
2016/03/15 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Python算法应用实战之栈详解
2017/02/04 Python
Python 学习教程之networkx
2019/04/15 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
大型活动策划方案
2014/01/12 职场文书
盗窃案辩护词
2015/05/21 职场文书
教师见习总结范文
2015/06/23 职场文书