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 相关文章推荐
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
php中日期加减法运算实现代码
Dec 08 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
php实现数组重复数字统计实例
Sep 30 PHP
Laravel 错误提示本地化的实现
Oct 22 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 实例化类的一点摘记
2008/03/23 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
vue实现通讯录功能
2018/07/14 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
python字符串,数值计算
2016/10/05 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
语文教育专业推荐信范文
2013/11/25 职场文书
办理生育手续介绍信
2014/01/14 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
分居协议书范本
2014/11/03 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫