2009-11-22 41 views

回答

0

每次訪問使用會話的PHP腳本/頁面時,都必須讀取會話數據。 默認情況下,該數據作爲文件存儲在磁盤上(例如,您可以覆蓋該文件並使用數據庫)

因此,基本上,對於每個頁面加載,必須讀取一定數量的會話數據(並且非常可能,寫)由PHP。會話中存儲的數據越多,會話文件就越大。

如果你只存儲了一些變量,沒有問題。但是如果你開始存儲巨大的數組,那麼如果你的命中率增加,你會遇到問題。

-

如果你想在一個會話存儲儘可能多的數據可能「保持簡單的代碼」,你可能會造成更多的問題來代替。例如 - 如果您希望將來啓用API訪問,則可能需要刪除大量會話數據存儲/檢索代碼並將其替換爲其他方法。

-

可能是不相關的問題的方法:

如果你想在會話中存儲某種全球應用程序狀態的,所以你不必重新計算它,你應該使用一些其他緩存方法,而不是會話。

0

有不會是一個性能問題。你可以在會話中存儲對象和變量,它不會降低性能。

0

實際上,這聽起來像你最終將自己節約一點,性能明智。如果這些值是簡單的字符串或數字,甚至是小數組或對象,這將是您更好的選擇。但是,如果要使用數千個key =>值對保存數組,則根據在特定情況下是否需要重新運行查詢可能會更好。

請記住,每次刷新時,您都會觸發存儲在會話變量中的每個對象的構造函數。大對象=重載荷。

0

它的表現問題不如實用性問題多。它對我來說很明顯,通過閱讀你的問題,你不會考慮在會話中存儲巨大的數組。

當另一個用戶的某些操作需要影響存儲在當前會話中的值時,即顯示用戶可以訪問和不可訪問的布爾數組時,問題就變得切實可行。將這些緩存在會話中使得撤銷權限不切實際。

沒有理由避免存儲被認爲是不可變的字符串和值,或者可以通過當前用戶的操作輕鬆地重新設置(即更改其用戶名)的值。