thinkPHP实现MemCache分布式缓存功能

作者:haiwei.sun 时间:2024-03-13 00:28:05 

本文实例讲述了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程序设计有所帮助。

标签:thinkPHP,MemCache
0
投稿

猜你喜欢

  • pytorch 预训练模型读取修改相关参数的填坑问题

    2021-11-07 01:08:36
  • Python模块相关知识点小结

    2022-04-12 06:58:23
  • JavaScript给数组添加元素的6个方法

    2024-04-30 08:46:47
  • Vue 实现从小到大的横向滑动效果详解

    2024-05-10 14:14:10
  • Oracle存储过程之数据库中获取数据实例

    2009-03-04 10:57:00
  • MySQL 定时器EVENT学习

    2010-10-14 13:55:00
  • 使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

    2021-03-31 12:42:31
  • Django视图函数的具体使用

    2023-07-25 11:02:54
  • 使用python快速在局域网内搭建http传输文件服务的方法

    2021-02-12 10:44:19
  • Python爬虫新手入门之初学lxml库

    2021-11-19 07:16:29
  • Python3 导入上级目录中的模块实例

    2023-09-01 02:25:20
  • python十进制转二进制的详解

    2023-06-07 23:39:33
  • Python 面向对象编程详解

    2023-06-25 05:24:23
  • vue2.0父子组件间通信的实现方法

    2024-04-28 09:20:16
  • PHP getDocNamespaces()函数讲解

    2023-06-13 22:19:06
  • Vue watch原理源码层深入讲解

    2024-04-30 10:40:58
  • 150行python代码实现贪吃蛇游戏

    2021-07-15 06:43:20
  • Python实现拓扑算法的示例

    2023-12-09 15:06:29
  • win10环境下配置vscode python开发环境的教程详解

    2022-09-06 21:19:49
  • 解决Mysql报Invalid default value for ''operate_time''错误的问题

    2024-01-14 08:42:16
  • asp之家 网络编程 m.aspxhome.com