每个人都知道PHP上的memcache有两个扩展:
您可以使用memcache将PHP扩展作为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使用这些变量时设置它们。
发布于 2011-07-13 18:30:59
在查看了PECL扩展和libmemcached本身的源代码之后,我终于在memcached扩展作者的博客评论中找到了我的答案。
http://zmievski.org/2009/01/new-memcached-extension
我引用他的话,以防他的博客有一天消失:
Andrei说: @Ash,会话保存路径语法与其他memcache扩展不完全相同。尝试:
session.save_path="127.0.0.1:11211“
Ash说:是否有任何关于语法的文档--也就是说,它是否处理多个服务器和可选参数,比如早期的memcache实现?(例如save_path="127.0.0.1:11211?persistent=1&timeout=1&retry_interval=15") )
Andrei说: @Ash,不,它没有那么先进。现在,语法是libmemcached解析器支持的默认语法:基本上,一个以逗号分隔的主机名列表:端口条目,其中:port是可选的。
或
Rich说:网络上是否有一个引用来解释主机:端口之后出现的每个连接参数?例如,“timeout=1”到底是什么意思?
Andrei说: @Rich,您使用的是哪个扩展?:)‘t不支持这些额外的参数,您一定是在讨论pecl/memcache 1。
和
Frank说: 1)在客户端上支持吗?我找不到关于这件事的任何信息。我知道pecl/memcache 3.0.4支持它。
2)客户端是否支持pecl/memcached?
Andrei说: Frank,我正在开发memcached扩展的下一个版本(2.0)。它将具有UDP支持和复制(故障转移)。
如果您检查版本2的源代码,例如,您可以看到可以附加到save_path字符串"PERSISTENT=“和”-SERVER“(我不知道它将如何使用)。
发布于 2011-07-13 04:53:45
您需要编写自己的会话处理程序,并围绕它包装Memcache(d)方法。
http://www.php.net/manual/en/function.session-set-save-handler.php
https://stackoverflow.com/questions/6668803
复制相似问题