我最近建立了一個安全系統,用於控制用戶可以查看和訪問的頁面,我構建它使得系統中每個頁面的所有值在登錄時都存儲在會話變量中,以避免每次頁面加載時訪問數據庫相同的信息。什麼時候應該在php中使用會話變量?
在這種情況下,我覺得使用會話變量是正確的。但是,如果它是僅在單個頁面上使用的值,我將從數據庫訪問。
在這兩個極端之間的什麼時候,在會話變量中加入正確的值?還是這些更基於你存儲的內容,如用戶名,而不是你使用它多少?
我最近建立了一個安全系統,用於控制用戶可以查看和訪問的頁面,我構建它使得系統中每個頁面的所有值在登錄時都存儲在會話變量中,以避免每次頁面加載時訪問數據庫相同的信息。什麼時候應該在php中使用會話變量?
在這種情況下,我覺得使用會話變量是正確的。但是,如果它是僅在單個頁面上使用的值,我將從數據庫訪問。
在這兩個極端之間的什麼時候,在會話變量中加入正確的值?還是這些更基於你存儲的內容,如用戶名,而不是你使用它多少?
會話變量存儲在服務器上,就像數據庫值存儲在服務器上一樣。
不同之處在於,您不是像查詢數據庫一樣查詢單個信息,而是一次加載整個「行」(即會話)。
沒有理由不通過將所有值存儲在數據庫的單個行中並查詢相應的性能結果。 (注意:用會話變量或數據庫字段做這件事是一個壞主意)最終,兩個數據源都來自服務器的存儲。
話雖這麼說...
Session變量傳統存儲與客戶端的狀態臨時值,例如,在所有的,當最後登錄時間是等客戶端是否被記錄。
數據庫變量應該存儲您希望超出特定客戶端會話持久性的內容。
不會查詢數據庫的每一頁加載信息,然後不得不解析它最終需要更長的時間,然後只是查詢會話變量持久所需的信息,如在我的例子? – user3700940
這兩者對於等量的數據是等效的。是什麼讓你覺得檢索會話變量更快?它仍然需要從某處的服務器存儲中讀取,然後整個提交給客戶端進行解析。 – hofan41
聽起來你會從緩存層獲得更多好處。當用戶可能不訪問這些頁面時預載所有頁面的數據是浪費資源。 – ceejayoz
@ceejayoz我只存儲一個位標誌的數組,以知道哪些鏈接和菜單項顯示在頁眉和頁面。頁面內容本身沒有什麼,對不起,如果我不清楚。 – user3700940