2010-01-11 64 views
9

我剛剛從我自己的MVC框架轉移到社區支持的一個(CodeIgniter)。我只是將會話轉換爲CodeIgniter functions,我注意到它們默認將會話數據存儲在加密的cookie中。他們提供的替代方案是數據庫會話,但不是像本地PHP庫那樣的服務器端文件會話。我應該使用數據庫會話還是本機PHP文件會話?

現在在我的網站上,我將構建一個安全的後端面板,以便加密的cookie看起來不像智能選項,但我並不特意想要不必要地連接到我的數據庫,因爲它不是非常快(共享主機)。

我想知道什麼在他們身後不支持本地會話會和是否數據庫會話服務器端文件會一般認爲是更好的選擇的理由。

謝謝。

回答

12

基本上,存儲會話的數據,人們一般採用以下三種解決方案:

  • 文件(默認)
  • 數據庫
  • memcached的

文件是最常用的,因爲它是默認設置 - 在大多數情況下,它工作得很好 - 但至少有一種情況不起作用:當你hav e幾臺服務器,並且您的用戶在這些(即當1個用戶不總是在同一臺服務器上時)

在這種情況下,有一箇中央/共享地點來存儲會話是必要的 - 數據庫適合這種描述;並且也易於安裝 - 而且PHP應用程序通常與數據庫一起工作。

而作爲數據庫不會擴展那麼好,尤其是對寫,你有時會使用,而不是,像memcached的:在RAM (快)存儲數據的mecanism,翻過儘可能多的服務器,只要你想/需要(體重很好)


您應該使用什麼解決方案?

那麼,在哪些情況下你呢?

  • 文件都行,只要至少一個用戶始終是相同的服務器
  • 。如果你需要一個數據庫應用程序,你可以存儲在數據庫中的會話:無需任何其它附加設置(例如,默認情況下,Drupal會這樣做)
  • 的memcached需要更多的設置,但可能是最好的解決方案,如果你真的車水馬龍......