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编写的导航条程序
Oct 09 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
基于PHP生成静态页的实现方法
May 10 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
PDO实现学生管理系统
Mar 21 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
一个ftp类(ini.php)
2006/10/09 PHP
php开启openssl的方法
2014/05/15 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python subprocess模块常见用法分析
2018/06/12 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
质检的岗位职责
2013/11/17 职场文书
企业项目策划书
2014/01/11 职场文书
自荐信格式简述
2014/01/25 职场文书
《老山界》教学反思
2014/04/08 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
拉贝日记观后感
2015/06/05 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书