我正在開發一個針對許多客戶端動態定製的PHP通用應用程序。在會話中保存對象是否是一種很好的做法?
我有類client
,其中我加載客戶端的樣式和偏好。
我的問題是:
它是一個很好的做法,以保存對象保存在session? (我認爲這是最好的解決方案,而不是在每個頁面中創建對象,這將需要大量的mysql查詢。
我正在開發一個針對許多客戶端動態定製的PHP通用應用程序。在會話中保存對象是否是一種很好的做法?
我有類client
,其中我加載客戶端的樣式和偏好。
我的問題是:
它是一個很好的做法,以保存對象保存在session? (我認爲這是最好的解決方案,而不是在每個頁面中創建對象,這將需要大量的mysql查詢。
在處理會話時,您需要考慮幾件事情。
您不應該在會話中存儲不同的大值。 我認爲這不是一個問題在你的情況下,因爲偏好足夠小。
將對象存儲在會話中時。您可能無法獲得實時更新。例如,可以說同一用戶使用兩個獨立的瀏覽器和/或機器登錄並將偏好修改爲一個。在這種情況下,其他人將不具有更新的定製。它不是一個大問題,但取決於您的要求。
我在這裏沒有看到任何其他問題。實際上它是有效的,很好的解決方案,可以在會話中存儲較小的值並避免數據庫查詢
如果它不會改變,並且會導致不斷調用MySQL查詢一遍又一遍然後是,這是一個好主意。
的MySQL查詢(和功能一般)是內存/ CPU密集型,並能影響的PHP頁面加載速度,使工作少,你是導致它做的事越好越好
如果返回值會不斷變化,那會更好不是,但存儲您可以在會話中的值。
客戶端信息永遠不會改變,並且不是每個客戶端的許多數據。我不能想到另一種選擇。謝謝! – Tony
我認爲會話將在客戶端關閉瀏覽器時終止。 如果您將其存儲在cookie(加載客戶端)中?這對安全性不利。
在會話中存儲迷你數據(加載服務器)。這意味着您正在服務器上使用某些內存。 當你有很多客戶時會發生什麼?
因此,數據庫連接應該在每個頁面的進程結束時銷燬。 不要擔心使用它。
客戶端信息永遠不會改變,並且不是每個客戶端的許多數據。謝謝! – Tony