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+javascript实现二级级联菜单的制作
May 06 PHP
PHP 加密与解密的斗争
Apr 17 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
PHP CURL使用详解
Mar 21 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 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绘制一条弧线的方法
2015/01/24 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
php中的异常和错误浅析
2017/05/03 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
自学python的建议和周期预算
2019/01/30 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
django model object序列化实例
2020/03/13 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
试述DBMS的主要功能
2016/11/13 面试题
团员个人的自我评价
2013/12/02 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
化学教育专业求职信
2014/07/08 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
单位授权委托书范本
2014/09/26 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
吴仁宝观后感
2015/06/09 职场文书
学校运动会通讯稿
2015/07/18 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python