以下获取mc服务器的代码存在问题
<?
php
function __getMc(){
static $__mc;
if(!
empty(
$__mc) &&
$__mc instanceof Memcache)
return $__mc;
else {
$__mc =
new Memcache;
$__mc->connect(MC_HOST, MC_PORT,
MC_CONNECT_TIMEOUT);
return $__mc;
}
}
当mc设置了timeout时,在一段时间后,Server自动关闭连接,此时$__mc其实是未连接的,但是验证条件
!empty($__mc) && $__mc instanceof Memcache
会得出true,此时将返回未连接的Mc类,对其进行set、get都将失败。
改进:在判断条件中增加对mc的访问来确定是否连接还在,如可以调用getStats()函数,判断返回值是否为false。或者调用version()函数还验证。
转载于:https://www.cnblogs.com/lqso/archive/2012/12/18/2823348.html
相关资源:JAVA上百实例源码以及开源项目