PHP中MC类存储成静态变量的风险

mac2022-06-30  74

以下获取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上百实例源码以及开源项目
最新回复(0)