2011-07-12 65 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」((我不知道怎麼會使用)