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 基本语法格式
Dec 15 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
php控制文件下载速度的方法
Mar 24 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
js回调函数仿360开机
2019/12/26 Javascript
Python实现的爬虫刷回复功能示例
2018/06/07 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
24式加速你的Python(小结)
2019/06/13 Python
详解如何减少python内存的消耗
2019/08/09 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Django数据库操作之save与update的使用
2020/04/01 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
职称自我鉴定
2013/10/15 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
python spilt()分隔字符串的实现示例
2021/05/21 Python