大家都知道PHP上有两个memcache扩展:
您可以将PHP扩展的memcache用作PHP的session_handler,如下所示:
session.save_handler = memcache
session.save_path = "tcp://serv01:11211,tcp://serv02:11211,tcp://serv03:11211"
或者您可以像这样使用memcached:
session.save_handler = memcached
session.save_path = "serv01:11211,serv02:11211,serv03:11211"
但是如何将其他参数设置为memcached,例如:
在PHP中,我会这样做:
$cache = new Memcached();
$cache->addServer('serv01', 11211);
$cache->addServer('serv02', 11211);
$cache->addServer('serv03', 11211);
$cache->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5);
$cache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$cache->setOption(Memcached::OPT_CONNECT_TIMEOUT, 150);
$cache->setOption(Memcached::OPT_RETRY_TIMEOUT, 0);
但到目前为止,我还没有找到任何关于session_handler使用时如何设置这些变量的文档或示例。
答案 0 :(得分:8)
在查看了PECL扩展和libmemcached本身的源代码之后,我终于在memcached扩展的作者的博客评论中找到了我的答案。
http://zmievski.org/2009/01/new-memcached-extension
我引用他的博客有一天消失的情况:
Andrei说: @Ash,会话保存路径语法与其他memcache扩展名不完全相同。尝试:
的session.save_path = “127.0.0.1:11211”
Ash Searle说:是否有任何语法文档 - 即它是否处理多个服务器和可选参数,如早期的memcache实现? (例如save_path =“127.0.0.1:11211?persistent=1&timeout=1&retry_interval=15”)
安德烈说: @Ash,不,这不是那么先进。目前,语法是libmemcached解析器支持的默认语法:基本上,以逗号分隔的hostname:port条目列表,其中:port是可选的。
OR
Rich Choy说: Web上是否有一个引用解释了host:port之后出现的每个连接参数?例如,“timeout = 1”究竟是什么意思?
安德烈说: @Rich,您正在使用哪个分机? :)我不支持那些额外的参数,你必须要谈论pecl / memcache。
和
Frank Orson说: 1)pecl / memcached是否支持客户端上的UDP?我找不到任何关于此的信息。我知道pecl / memcache 3.0.4支持它。
2)pecl / memcached是否在客户端中具有故障转移支持?
Andrei说: Frank,我正在研究memcached扩展的下一个版本(2.0)。它将具有UDP支持和复制(故障转移)。
如果检查版本2的源代码,您可以看到例如可以在save_path字符串“PERSISTENT =”和“--SERVER”中附加((我不知道它将如何使用)< / p>
答案 1 :(得分:3)
您需要编写自己的会话处理程序并围绕它包装Memcache(d)方法。
http://www.php.net/manual/en/function.session-set-save-handler.php