如果我连接的memcached服务器不可用(无论出于何种原因),我正试图强制PHP的Memcache extension几乎立即超时。我想在这种情况下抛出异常(将在其他地方处理)。
我一直在寻找和尝试不同的事情而没有任何运气。我正在使用标准添加服务器(现在只有一个):
$this->memcache->addServer ( $server['host'], $server['port'] );
然后我杀死了memcached deamon(也尝试使用错误的端口和主机)并打开了我的页面。它只是加载了很长时间,然后nginx返回504 Gateway Time-out
错误。
我怎么能告诉memcache客户端尝试,我不知道,1秒然后放弃,此时我应该能够以某种方式检测到超时。
最重要的是,如果我们的memcached服务器出现故障,我想尽快显示一个用户友好的错误页面(已经为未捕获的异常工作),并且在用户看到之前不要让用户等待30秒通用服务器错误。
答案 0 :(得分:4)
答案 1 :(得分:3)
减少max_failover_attempts
memcache模块配置参数的值,默认数量太高。
您还可以将超时指定为connect()
方法的第3个参数:
$memcache->connect('memcache_host', 11211, $timeout);
但是默认超时应该已经设置为1秒。
另一个值得关注的地方是OS中的TCP超时参数。