我遇到yii问题并在memcache中存储数据。对于我的应用程序,我使用system.caching.CMemCache和以下配置:
'servers' => array(
'server1' => array('host' => 'localhost', 'port' => 11211, 'weight' => 50),
'server2' => array('host' => '192.168.0.2', 'port' => 11211, 'weight' => 50)
),
如果两个系统上的memcache都在运行,那么一切正常,价值会在服务器上传播开来。但如果一台服务器出现故障(或者我手动停止了内存缓存),应用程序会抛出错误,如
MemcachePool::get(): Server 192.168.0.2 (tcp 11211, udp 0) failed with: Connection refused (111)
这不是很好,我想如果一个服务器失败,yii会选择另一个服务器进行读写,或者至少产生一些缓存未命中并且不抛出一个异常:(
这是正常的还是有一些配置问题?
答案 0 :(得分:2)
我认为,正如您所使用的memcache
扩展程序
并阅读此SO。
php的扩展名有两个版本memcache
,而另一个版本是memcached
。您可以在ubuntu框中安装它们,如:
sudo apt-get install php5-memcache
and
sudo apt-get install php5-memcached
Memecached
扩展程序处理failover
情况,因为我从上面的链接中读取并通过测试yii中的以下设置进行确认
'cache'=>array(
'class'=>'CMemCache',
'useMemcached'=>true,
'servers'=>array(
array(
'host'=>'localhost',
'port'=>11211,
'weight'=>60,
),
array(
'host'=>'192.168.33.31',
'port'=>11211,
'weight'=>30,
),
),
),
如上所述为php安装memcached
扩展,并将'useMemcached'=>true,
设置添加到缓存配置。当我在我的localhost上测试时,它处理故障转移情况,但页面响应时间显着下降。 / p>
希望这会有所帮助。
答案 1 :(得分:0)
这个变量是真的吗?
http://www.php.net/manual/en/memcache.ini.php#ini.memcache.allow-failover
否则此链接也很有用:
(可能这只是一个通知。)