2010-07-17 42 views
1

如果我運行兩個以上的服務器實例(使用rackspace-cloud的ip組),我該如何使用PHP管理我的會話?如何使用RackSpace Cloud進行會話管理?

有沒有辦法讓用戶對他們原先登錄的服務器「粘性」?我確實使用了memcached,但所有的雲系統都有memcached,我需要確保用戶會話到達正確的服務器。

我不想單點故障。

回答

2

使用文件以外的其他內容進行會話管理。 PHP允許你覆蓋處理程序。我使用memcache。有一個PECL擴展,它還有:http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/

下面是它的另一篇文章:http://www.ducea.com/2009/06/02/php-sessions-in-memcached/

UPDATE

要從意見解決問題:

這允許您使用用於會話的中央memcache機器集。而不是每個服務器都在本地查看其文件系統,它將查找您定義的中央memcache羣集。

爲了避免單點故障,memcache羣集可以是任意多臺機器。下面是一個例子,從CONFIG的php.ini:

延長= memcache.so memcache.allow_failover = 1個 memcache.redundancy = 1個 memcache.session_redundancy = 2 ;使用memcache作爲會話處理程序 session.save_handler = memcache ;用逗號分隔的服務器的URL列表用於存儲: 的session.save_path = 「UDP://:11211執着= 1個&重量= 1個&超時= 1 & retry_interval的= 15」

+0

我使用的memcache所有時間,我的問題是 - 同一個系統會有很多副本。我如何使會話變得粘稠?所有的雲設備都會運行memcache ......明白我的意思嗎? – MichaelICE 2010-07-17 02:05:58

+0

@mike,你可以讓每臺機器引用一箇中央memcache機器。 – 2010-07-17 02:16:08

+0

我真正想要做的就是在所有實例上使用MemcacheD,並找出一種方法來確保它可以使用某種粘滯位獲取其會話標識。 – MichaelICE 2010-07-17 02:26:38