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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
phpquery中文手册
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
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
python模块导入的细节详解
2018/12/10 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
python实现批处理文件
2020/07/28 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
汽车销售顾问求职自荐信
2014/01/01 职场文书
大学生实习感言
2014/01/16 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
2014年党支部工作总结
2014/11/13 职场文书
华清池导游词
2015/02/02 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
Golang流模式之grpc的四种数据流
2022/04/13 Golang