同事!
我使用memcache(2.2.6)客户端库(http://pecl.PHP.net/package/memcache)运行PHP 5.3(5.3.8)来处理memcached服务器.
我的目标是为会话引擎提供故障切换解决方案,即:
>只支持本地PHP会话(没有自定义处理程序)
>池中的几个memcached服务器
我期望的是,如果一个memcached服务器关闭,PHP将尝试利用池中的第二个服务器[将成功连接并变得快乐],但是当池中的第一个memcached服务器关闭时,我正在接收以下错误:
Session start Failed. Original message: session_start(): Server 10.0.10.111 (tcp 11211) Failed with: Connection refused (111)
而相关的PHP设置是:
session.save_handler memcache session.save_path tcp://10.0.10.111:11211?persistent=1&weight=1&timeout=1&retry_interval=10,tcp://10.0.10.110:11211?persistent=1&weight=1&timeout=1&retry_interval=10
和memcache设置(虽然我认为它接近标准)是:
Directive Local Value memcache.allow_failover 1 memcache.chunk_size 8192 memcache.default_port 11211 memcache.default_timeout_ms 1000 memcache.hash_function crc32 memcache.hash_strategy standard memcache.max_failover_attempts 20
Memcached仍然运行在第二台服务器上,可以从WEB服务器完全访问:
telnet 10.0.10.110 11211 Trying 10.0.10.110... Connected to 10.0.10.110 (10.0.10.110). Escape character is '^]'. get aaa END quit Connection closed by foreign host.
所以换句话说,不是按顺序查询所列出的所有服务器,而是尝试连接队列中的第一个服务器不成功.最后我意识到有3.0.x客户端库的版本可用,但是它仍然是beta版本,对我来说看起来不太可靠.
请指导如何使用标准PHP,客户端库和服务器获得所需的行为.
非常感谢!
最好,
尤金