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对多项选择的处理
Oct 09 PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
PHP之数组学习
May 29 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
用python代码做configure文件
2014/07/20 Python
python实现udp数据报传输的方法
2014/09/26 Python
python保存字符串到文件的方法
2015/07/01 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
python实现杨氏矩阵查找
2019/03/02 Python
python3实现表白神器
2019/04/09 Python
python tornado修改log输出方式
2019/11/18 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python代码注释规范代码实例解析
2020/08/14 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
外贸采购员求职的自我评价
2013/11/26 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
双拥工作宣传标语
2014/06/26 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2014年客房部工作总结
2014/11/22 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
导游词之张家界
2019/10/31 职场文书