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数据代码
Jun 05 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
php操作redis缓存方法分享
Jun 03 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
一个简单的php路由类
May 29 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 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
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python元组常见操作示例
2019/02/19 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
python 串行执行和并行执行实例
2020/04/30 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
创业计划书的写作技巧及要点
2014/01/31 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
街道务虚会发言材料
2014/10/20 职场文书
公司总经理岗位职责
2015/04/01 职场文书
步步惊心观后感
2015/06/12 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
担保书范文
2019/07/09 职场文书