我打算做我自己的自定義會話處理函數。我想將它保存在數據庫中,但我有一些疑問。在數據庫中保存會話的最佳方式是什麼?
它是可行的或只會減慢我的應用程序?
我有每個
set
後保存會話或可我只是將它保存一次全部?因爲我有這個想法把這個函數放在類的析構函數方法中。所以,當程序結束時,它會將數據保存在數據庫中。但我該如何使用我的其他類(數據庫類)呢,確保它不會在會話類之前被破壞?
如果用戶退出的連接和應用程序停止運行時,析構函數仍然會叫什麼名字?
這樣,你們覺得呢?你建議我做什麼?
我打算做我自己的自定義會話處理函數。我想將它保存在數據庫中,但我有一些疑問。在數據庫中保存會話的最佳方式是什麼?
它是可行的或只會減慢我的應用程序?
我有每個set
後保存會話或可我只是將它保存一次全部?因爲我有這個想法把這個函數放在類的析構函數方法中。所以,當程序結束時,它會將數據保存在數據庫中。
但我該如何使用我的其他類(數據庫類)呢,確保它不會在會話類之前被破壞?
如果用戶退出的連接和應用程序停止運行時,析構函數仍然會叫什麼名字?
這樣,你們覺得呢?你建議我做什麼?
我使用DB會話的所有與Zend和Symfony的時間,以便其絕對可行的,會有課程,但最有可能沒有顯著的成本。
通常這些處理程序的工作方式是使用session_set_save_handler
它工作正常,除了所謂的實際功能,寫入數據的方式。但要注意有關物體破壞的警告。
是的,它一般會比PHP的本地會話處理程序稍微慢一些,但是它不應該是明顯的。這是除非您有文件鎖定問題的問題(如Windows一樣)
爲什麼要永久存儲會話數據? 通常人們使用不同的會話處理程序來加快應用程序的速度(我們使用memcache進行會話,因爲我們的應用程序非常複雜且分佈廣泛,我們希望它運行得更快)。我認爲這個要求是糟糕的應用程序設計,如果你想以某種方式跟蹤你的訪問者,有很多更好的方法來做到這一點。或者,您正在使用會話來處理不太適合或不適合的事情。當然,我可以想象,可能會有這樣的要求,只是我不認爲這是事實。
它與保留歷史會話數據沒有任何關係。通常,它關於在分佈式,縮放或負載平衡部署中跨應用程序的多個實例訪問相同的會話數據。 IT與使用memcache進行基本相同的事情,儘管設置和管理更慢,更容易。 – prodigitalson 2010-09-03 02:16:59