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 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
php实现的简单检验登陆类
Jun 18 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 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的性能
2013/10/30 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php处理复杂xml数据示例
2016/07/11 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
jquery 常用操作方法
2010/01/28 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
对python:print打印时加u的含义详解
2018/12/15 Python
python 19个值得学习的编程技巧
2020/08/15 Python
Django多数据库联用实现方法解析
2020/11/12 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
就业推荐自我鉴定
2013/10/06 职场文书
毕业生教师求职信
2013/10/20 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
跑操口号
2014/06/12 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
行政助理岗位职责范本
2015/04/11 职场文书