2011-05-20 86 views
0

在我的研究中,我發現在這個問題上雙向指向的意見。希望能夠澄清這個問題。PHP:默認/ tmp會話VS session_set_save_handler()性能

我們知道將會話數據存儲在數據庫中的明顯有利的安全方面。

選項1:

在文件系統中使用的默認會話存儲(默認爲是/ tmp)

選項2:

使用session_set_save_handler()到 將會話數據存儲在/ a 中數據庫。


我的問題是:

  1. 在一個高流量的網站,有什麼例子就是提供最佳性能?
  2. 這是一個系統硬件的問題,這個特定網站的瓶頸在哪裏?在這種情況下,該網站主要指向顯示來自數據庫的特定用戶數據。可能這是一個需要服務器錯誤輸入的問題。
  3. 該網站可能不得不迅速傳播到多個服務器,以處理來自世界其他地區的負載和可訪問性。想想CDN。這會影響我的決定嗎?我認爲,如果它存儲在數據庫中,管理不同計算機之間的會話信息會容易得多。

回答

1

爲什麼存儲到/ tmp不被高流量站點青睞的原因是因爲它們使用負載平衡。負載均衡可以有效地交換哪臺機器提供數據。如果會話在/ tmp中,並非所有計算機都具有相同的/ tmp目錄,這意味着您的用戶可能會開始顯示登錄或註銷,原因不明。

這就是爲什麼有些網站在數據庫中存儲數據。然而,這是無效的,因爲對網站的每個請求都意味着從db中獲取信息,這意味着不斷連接,將數據從文本轉換爲數組等等。

所以,還有第三種選擇 - 將會話數據與Memcache一起存儲。這很簡單,如果你對這個問題有一點點的瞭解,你會找到答案,你可以在5分鐘內完成整個事情。

+0

由於會話ID,負載均衡器可以選擇機器。 – Gumbo 2011-05-20 13:27:50

+0

這不僅僅是負載平衡,我以此爲例。還有一些會話保存在/ tmp中,比如任何有權訪問本機的人都可以篡改會話文件等等。這是一個關於性能和將數據直接存儲到RAM的問題,是處理會話存儲/檢索的最快方法。 – 2011-05-20 13:32:00