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远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
PHP 中文处理技巧
Apr 25 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php加密解密实用类分享
Jan 07 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
php常用数学函数汇总
Nov 21 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
PHP 时间处理类Carbon
May 20 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
JSONP 跨域共享信息
2012/08/16 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
js过滤HTML标签完整实例
2015/11/26 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
js实现抽奖效果
2017/03/27 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JS 事件机制完整示例分析
2020/01/15 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
爱心捐助倡议书
2014/05/19 职场文书
党建工作经验交流材料
2014/05/25 职场文书
远程培训的心得体会
2014/09/01 职场文书
2015年项目工作总结
2015/04/29 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
2015年纪委工作总结
2015/05/13 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
python pyhs2 的安装操作
2021/04/07 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
python之django路由和视图案例教程
2021/07/26 Python