【发布时间】:2011-11-22 12:53:58
【问题描述】:
快速说明,我不是在谈论现有会话,我知道,如果 memcache 服务器脱机,它们将会丢失。
想象以下情况:
a) PHP
b) PECL 内存缓存扩展 (http://pecl.php.net/package/memcache)
c) 将 PECL 内存缓存设置为会话处理程序
d) 通过 session.save_path = "tcp:....., tcp:.....";
设置多个 memcache 服务器来执行此操作e) 其中一个内存缓存服务器出现故障(服务器重新启动、守护进程停止等)。因此,在这一点上,我们仍然会留下至少一个有效且正常工作的 memcache 服务器。
上述情况如何影响正在创建的新会话?
我查看了http://www.php.net/manual/en/memcache.ini.php 的 memcache 手册,手册有点薄。
虽然它确实说与http://www.php.net/manual/en/memcache.addserver.php 中列出的参数相同。
我们已尝试关闭我们的一个 memcached 服务器进行测试,我们的 php 日志开始填充“无法写入会话数据,请检查您的......”。
目前我们的 session.save_path ini 设置看起来像:
session.save_path = "tcp://xxx.xxx.xxx.xxx:z?persistent=1, tcp://yyy.yyy.yyy.yyy:z?persistent=1";
所以,总结一下:
1) 当其中一个会话处理程序发生故障时会发生什么?
2) 有没有办法将此扩展配置为在尝试失败时透明地尝试列出的“其他”内存缓存服务器之一?还是自动完成?
3) 在 memcache 运行时配置手册页 @ php.net 我看到一个设置“memcache.allow_failover”,默认为 true (on),这是否也适用于会话处理?还是只在 'in php' 中调用 memcache?
谢谢。
进一步澄清,我们使用的是位于 http://pecl.php.net/package/memcache 的扩展程序的 3.0.6 版本。
【问题讨论】: