2011-08-11 37 views
0

我正在使用PHP和MySQL。在每個頁面上都需要一些站點配置變量,例如site_url,site_path,contact_email,default_timezone ...等。使用會話存儲網站配置是否是一種安全的方式?

我沒有在每次刷新頁面時從數據庫中檢索這些值,而是將它們存儲在第一頁訪問的會話中。

我一直在使用這種方式一段時間,我沒有遇到任何問題。我現在看到的唯一缺點是,如果值發生變化,我必須關閉瀏覽器才能清除會話,然後重新加載。 (但這些值幾乎是靜態的)

我想知道這是否正常。這是否會導致其他問題?

而且,我可以在會話中存儲多少信息?有限制嗎?

回答

1

其中一些聽起來像是全局值,對所有用戶都很常見。這是一個會話價值不佳的候選人。最好將這些文件存儲在某個文件中。如果存儲50,000個會話的「site_url」,如果每個會話的值相同,則毫無意義。浪費時間和空間。

會話存儲應該是針對每個用戶的數據,而不是/不能在多個用戶之間共享的。

除了有多少磁盤空間,PHP的memory_limit以及您願意浪費多少CPU時間來分析網站上每次點擊的數兆字節數據之外,會話存儲沒有實際的限制。

0

有在多少,你可以存放在會話沒有限制,但有多大的內存PHP可以如何使用http://ca.php.net/manual/en/ini.core.php#ini.memory-limit

+0

limist也是由webserver的temp目錄中的磁盤空間配額(如果使用默認會話處理程序)或例如數據庫字段的大小(如果使用將會話數據存儲在數據庫中的自定義會話處理程序) – Mchl

0

這取決於你希望有多少用戶的限制。在每次超過幾十次的任何情況下,將這些信息存儲在會話數據中並不是一個好主意。

在這種情況下,會話不應該充當緩存。問題是如果你有一萬個會話,那麼會話數據必須被複制一萬次。這不是有效的。

如果您的項目規模保證,您最好使用類似memcached(或APC緩存)的內容來存儲指定時間段內的緩存值。如果您使用數據庫類來處理配置,請從緩存中爲您提取數據庫類,以便調用代碼的所有位置都可以執行此操作,而無需擔心實現。您可以嘗試將文件用作緩存機制,但在這種情況下,您不得不擔心緩存超時和文件訪問。在做出決定之前進行測量。

相關問題