YII实现Memcache故障转移的配置办法

YII在默认配置下连接Memcache失败时会报错,要想实现故障转移就要改一下配置和代码

1、首先修改一下YII的 caching/CMemCache.php,我的版本是 1.1.7

找到 

$cache->addServer($server->host,$server->port,$server->persistent,$server->weight,$server->timeout,$server->status);

改为

$cache->addServer(
  $server->host,
  $server->port,
  $server->persistent,
  $server->weight,
  $server->timeout,
  $server->retryInterval,
  $server->status);

原因:源码中少了 retryInterval 参数,这是故障转移的关键参数

retry_interval 的官方解释

服务器连接失败时重试的间隔时间,默认值15秒。如果此参数设置为-1表示不重试。

FROM http://php.net/manual/zh/memcache.addserver.php

2、修改YII应用的配置文件 protected/config/main.php 中的cache配置项

'cache'=>array(
            'class'=>'system.caching.CMemCache',
            //'useMemcached'=> true,
            'servers'=>array(
                 array(
                     'host'=>'127.0.0.1',
                     'port'=>11211,
                     'weight'=>40,
                     'timeout' => 5,
                     'retryInterval' => -1
                 ),
                array(
                     'host'=>'127.0.0.1',
                     'port'=>11212,
                     'weight'=>30,
                     'timeout' => 5,
                     'retryInterval' => -1
                 ),
                array(
                     'host'=>'127.0.0.1',
                     'port'=>11213,
                     'weight'=>50,
                     'timeout' => 5,
                     'retryInterval' => -1
                 ),
            ),
         ),

以上代码中只有一个是能正确使用的MC服务器,即端口是11211的服务器是正常开启的

如此配置也能正常运行了

转载于:https://www.cnblogs.com/imbin/p/3861039.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值