2011-07-12 63 views
16

大家都知道有两个扩展内存缓存的PHP:PHP会话和Memcached的

  • 的memcache
  • memcached的

您可以使用内存缓存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的如:

  • 的Memcached :: OPT_DISTRIBUTION
  • 的Memcached :: OPT_RETRY_TIMEOUT
  • 的Memcached :: OPT_CONNECT_TIMEOUT

在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

这是一个开箱即用的PHP和memcached实现。http://kvz.io/blog/2008/06/22/enhance-php-session-management/ – Beachhouse

回答

8

寻找波谷都PECL扩展的源代码和libmemcached本身后,我终于找到了我的答案在分布式缓存扩展的作者的博客的评论。

http://zmievski.org/2009/01/new-memcached-extension

我引用的情况下,他的博客中消失了一些日子:

安德烈说: @Ash,会话保存路径语法是不太一样的其他内存缓存扩展名。尝试:

的session.save_path =“127.0.0.1:11211”

灰塞尔说:是否有语法的任何文件 - 即它处理多个服务器和可选参数,如早期的内存缓存的实现? (例如的save_path = “127.0.0.1:11211?persistent=1 &超时= 1 & retry_interval的= 15”)

安德烈说: @Ash,不,它不是那么先进。目前,语法是libmemcached解析器支持的默认语法:基本上,用逗号分隔的hostname:port条目列表,其中:port是可选的。

OR

丰富蔡先生说:是否有说明该主机后出现每个连接参数在网络上的引用:端口?例如,“timeout = 1”是什么意思?

Andrei说: @Rich,你用的是哪个扩展名? :)我不支持那些额外的参数,你一定在谈论pecl/memcache之一。

弗兰克·奥森说: 1)是否PECL/memcached的支持,在客户端上UDP?我找不到任何有关此信息。我知道pecl/memcache 3.0.4支持它。

2)pecl/memcached是否在客户端有故障转移支持?

Andrei说: Frank,我正在研究memcached扩展的下一个版本(2.0)。它将具有UDP支持和复制(故障转移)。

如果选中的第2版的源代码,你可以看到,例如,你可以在字符串的save_path追加“永久=”和“--Server”((我不知道怎么会使用)