2013-10-21 78 views
0

我正在使用Yii PHP框架構建一個論壇網站。我也使用Memcached進行會話維護和存儲一些數據對象。Yii會話變量和Memcached

對於每一個用戶請求我一定要得到一些用戶信息,檢查一些事情(來檢查他是否是特定組的成員或不和也等檢查)

那麼我刨了兩種方法

1)不要在會話中存儲任何東西,除了用戶標識,並建立用戶會話後,從memcached中獲取對象並檢查它 - 這裏有一個用戶對象和兩個對memcached服務器的調用 (一個是會話調用等獲取用戶對象)

2)店鋪所有需要會話中的用戶信息使用setState方法。成功登錄後,用戶從會話對象獲取信息並進行檢查。這裏memcached中有兩個用戶對象,用戶會話中有一個用戶對象(當然這再次存儲在memcached中)。但我覺得,當會話使用一個呼叫建立,我們得到了用戶所需的全部細節(真的是這樣的話?)

不知道什麼是最好的辦法。感謝您的幫助。

回答

1

從性能比較的角度來看,都沒有區別,因爲你還保存在memached會議(也就是至少你說的話)。因此,使用會話來處理這類信息是最合理的。另外,你必須爲每個用戶創建和存儲唯一的緩存鍵 - 這種重新設置會話已經爲你做了什麼。

+0

謝謝麥克你的迴應。我想我忘記提及任何我將用戶對象存儲在memcached中的其他原因(與其他用戶比較,比如他們是朋友還是他們在同一組中)。但是正如你所說的,它看起來好像存儲會話對象,儘管對象是重複的。我測試了幾個用戶,我在服務器中看到會話對象存儲,並且不需要memcached再次獲取信息。如果我不存儲會話,它會調用memcached太多。當然,正如你所說,它不會帶來任何性能差異。 – Bujji