2010-09-01 64 views
0

我打算做我自己的自定義會話處理函數。我想將它保存在數據庫中,但我有一些疑問。在數據庫中保存會話的最佳方式是什麼?

  • 它是可行的或只會減慢我的應用程序?

  • 我有每個set後保存會話或可我只是將它保存一次全部?因爲我有這個想法把這個函數放在類的析構函數方法中。所以,當程序結束時,它會將數據保存在數據庫中。

    • 但我該如何使用我的其他類(數據庫類)呢​​,確保它不會在會話類之前被破壞?

    • 如果用戶退出的連接和應用程序停止運行時,析構函數仍然會叫什麼名字?

這樣,你們覺得呢?你建議我做什麼?

回答

1

我使用DB會話的所有與Zend和Symfony的時間,以便其絕對可行的,會有課程,但最有可能沒有顯著的成本。

通常這些處理程序的工作方式是使用session_set_save_handler它工作正常,除了所謂的實際功能,寫入數據的方式。但要注意有關物體破壞的警告。

0

是的,它一般會比PHP的本地會話處理程序稍微慢一些,但是它不應該是明顯的。這是除非您有文件鎖定問題的問題(如Windows一樣)

0

爲什麼要永久存儲會話數據? 通常人們使用不同的會話處理程序來加快應用程序的速度(我們使用memcache進行會話,因爲我們的應用程序非常複雜且分佈廣泛,我們希望它運行得更快)。我認爲這個要求是糟糕的應用程序設計,如果你想以某種方式跟蹤你的訪問者,有很多更好的方法來做到這一點。或者,您正在使用會話來處理不太適合或不適合的事情。當然,我可以想象,可能會有這樣的要求,只是我不認爲這是事實。

+0

它與保留歷史會話數據沒有任何關係。通常,它關於在分佈式,縮放或負載平衡部署中跨應用程序的多個實例訪問相同的會話數據。 IT與使用memcache進行基本相同的事情,儘管設置和管理更慢,更容易。 – prodigitalson 2010-09-03 02:16:59

相關問題