我在這裏有一個小的情況,但我想嘗試並確保以正確的方式處理此問題。我應該使用會話變量還是全局超級變量
我有一個網絡應用程序,由幾家商店使用。 每家商店都通過htaccess和htpasswd進行驗證,以連接到正確的數據庫。 這部分效果很好!
每家店都有多名員工,但每位員工都使用一臺獨立的計算機/工作站。
因此,它會登錄,獲得認證,連接到適當的數據庫,然後加載登錄頁面。
在登錄頁面,用戶使用名稱和密碼登錄到應用程序,他們很好。 此時,我正在將用戶信息(UserID,安全級別等)加載到會話中。 我的問題的一部分是垃圾收集,因爲每隔一段時間會話變量就會丟失。 每個頁面的會話開始都是第一件事,所以我想象一下,在一小時左右的閒置狀態下,會話被垃圾收集器和垃圾收集器收集,它就消失了。
我正忙着將用戶信息加載到$GLOBALS
超變量中以避免由於不活動而丟失會話。 現在,我意識到有一些方法可以在PHP中延遲/停止垃圾回收器,但是在我看來,如果使用全局範圍,則無需額外編碼或配置PHP。 我假設只要每個用戶在他們自己的機器上訪問使用$GLOBALS
的網站只適用於每個用戶,我是否正確?
我認爲你對「$ GLOBALS」有什麼誤解。這個[answer](http://stackoverflow.com/a/14848246/1022914)提供了關於'$ GLOBALS'和'$ _SESSION'之間區別的簡短說明。 – Mikey
我明白這一點。但我的觀點是,儘管$ GLOBALS仍然與一個用戶而不是應用程序綁定在一起。隨着每個用戶從一臺單獨的計算機登錄到站點,那麼$ GLOBAL變量不應該像會話變量那樣工作,就像垃圾收集事件的發生一樣? – phpnoobie
就是這樣的:全局變量**不像**會話變量。如果你創建一個全局變量,它會在你改變/退出你的腳本的時候像普通變量一樣死亡,而一個會話變量在它到期之前仍然保持活躍或者你強行取消它。一般經驗法則:從不使用全局變量。 – Mikey