一直致力于会话的复制。我下载并安装了memcached + repcached。 现在我可以在两台服务器上运行时复制数据没有问题,我已通过telnet确认了这一点(telnet 127.0.0.1 11211)
但是,在php环境中,一旦其中一台机器出现故障,似乎确实存在问题。
我在memcache.ini中设置了memcache.allow_failover = 1。
我决定不改变php.ini。我正在使用ini_set函数来设置save_path和保存处理程序。我还在每个服务器上都有一个memcached(repcache patched)实例。当我取下server1时,我不断收到一个php警告(apache错误日志),浏览器就在那里等待它的memcached服务器重新启动,此时似乎没有将memcache存储重新路由到其他服务器。即使所有会话数据实际上都在被复制。 (有奴隶主问题吗?)
PHP警告:未知:无法写入会话数据(memcached)。请在第0行的Unknown中验证session.save_path的当前设置是否正确(127.0.0.1:11211,191.168.100.4:11211),
服务器1
$cache_servers = array(
"127.0.0.1:11211",
"192.168.100.3:11211"
);
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', implode(',', $cache_servers));
/ usr / local / bin / memcached -u nobody -p 11211 -m 64 -x 192.168.100.4 -vv
服务器2
$cache_servers = array(
"127.0.0.1:11211",
"192.168.100.4:11211",
);
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', implode(',', $cache_servers));
/ usr / local / bin / memcached -u nobody -p 11211 -m 64 -x 192.168.100.3 -vv
如果我的概念错了或不管它是什么,请帮忙。提前谢谢。
答案 0 :(得分:2)
您似乎正在使用memcached扩展,但更改了memcache选项。他们是不同的!
memcacheD扩展到版本2不支持故障转移。使用memcache扩展或将memcacheD升级到版本2.0(尽管它仍处于测试阶段)。