我們使用的是亞馬遜網絡服務(AWS),我們有多個網絡服務器和負載均衡器。 Web服務器的問題是,$ _SESSION對每個服務器都是唯一的。我在$ _SESSION中保存了關於用戶的一些信息。如何使用Amazon Web Services(AWS)同步會話?
同步此信息的正確方法是什麼?有沒有什麼辦法可以統一這個地方,這些會話在哪裏,或者我應該使用MySQL來存儲這些數據(我真的不喜歡最後一個選項)?
我們使用的是亞馬遜網絡服務(AWS),我們有多個網絡服務器和負載均衡器。 Web服務器的問題是,$ _SESSION對每個服務器都是唯一的。我在$ _SESSION中保存了關於用戶的一些信息。如何使用Amazon Web Services(AWS)同步會話?
同步此信息的正確方法是什麼?有沒有什麼辦法可以統一這個地方,這些會話在哪裏,或者我應該使用MySQL來存儲這些數據(我真的不喜歡最後一個選項)?
我認爲你要找的是'粘滯會議'。如果我說得對,亞馬遜給你兩種不同的選擇。
負載均衡(基於持續時間,我推薦這一個)http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsLBCookies
雖然概念上類似於你正試圖避免由於某種原因,MySQL的選項,使用內Amazon Web Services (AWS)一個相當有吸引力的選擇是最近推出的Scalable Session Handling in PHP Using Amazon DynamoDB,其中涉及在PHP 典型的會話處理是不可擴展,因此要求某種定製解決方案無論如何:
會話用於保存跨多個HTTP 請求[...]的短期數據。 PHP的本地會話處理程序會將 會話數據存儲到本地文件系統;但是,這種方法在分佈式Web應用程序中變得不可靠 。在隨後的請求中, 用戶可能不會路由到同一臺服務器,導致數據有效地被遺忘。用戶將被註銷並且感到困惑。
爲了解決這個問題,PHP開發人員已經實現定製的解決方案 爲存儲其用戶的會話數據使用數據庫, 共享文件系統,內存緩存服務器,防篡改的餅乾,和其他 存儲機制。 [...] [重點煤礦]
根據您的使用情況,你可能想給這個潛在的非常快的會話存儲一個相應的嘗試。
要添加到上面的回答,你想找的像DynamoDB分佈式緩存是一個付費的亞馬遜服務。它的使用非常快速而且非常出色,但如果您正在尋找其他一些開源替代品,則可以查看以下內存讀取/寫入選項。
爲什麼你試圖避免將會話存儲在數據庫(或特定的MySQL)? –
因爲我們的產品已經準備就緒,我們只需要進行擴展。改變它現在的工作方式將需要改變網站的核心,這將需要時間和多個地方的變化,所以我們試圖找到最簡單的溶劑,這將需要幾乎沒有變化。 –