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 相关文章推荐
PHP3 safe_mode 失效漏洞
Oct 09 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
php学习之function的用法
Jul 14 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
php实现微信支付之企业付款
May 30 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
laravel使用redis队列实例讲解
Mar 23 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 setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
基于php split()函数的用法详解
2013/06/05 PHP
深入php self与$this的详解
2013/06/08 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
详解js闭包
2014/09/02 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
python time.strptime格式化实例详解
2021/02/03 Python
苹果台湾官网:Apple台湾
2019/01/05 全球购物
优秀毕业生求职推荐信范文
2013/11/21 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
大一学生的职业生涯规划书范文
2014/01/19 职场文书
装修设计师求职信
2014/02/26 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
新教师培训心得体会
2014/09/02 职场文书
化工见习报告范文
2014/10/31 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书