2009-09-29 130 views
1

跨腳本共享全局$ _SESSION數組中的會話變量嗎?比方說,我把一個值放入$ _SESSION ['box'],可以另一個同時運行的腳本存儲另一個值與相同的密鑰?他們會衝突嗎?或者它會根據來自客戶端的會話ID來管理實際的變量值?是否跨運行腳本共享一個PHP會話變量?

回答

5

如果你有相同的瀏覽器調用2頁設置相同的會話變量,無論哪一個最後處理將設置值。

如果您有2個獨立的瀏覽器/用戶訪問相同的2頁,他們將設置唯一的值。

1

存儲在會話中的數據存儲在每個客戶端的基礎上 - 該ID通常由cookie傳遞。

這意味着你不能讓兩個用戶訪問同一個會話;這不是它存在的。

=> 2個用戶/瀏覽器/客戶端= 2個不同的會話= 2個不同的值。


如果你問在相同的使用/客戶端請求大約兩個腳本,並使用基於文件的會話(這是默認值),該用戶的會話文件應該由第一個腳本被鎖定的是開始,所以兩個腳本不能同時訪問它 - 如果兩個腳本試圖同時修改會話,這可能會導致問題。

=> 1個用戶,2個請求= 1個將被執行;那麼,只有第二個將被執行;意味着第一個設置的數據將從第二個設置中可見 - 只有在第一個完成後才能執行。

1

如果我正確理解你,那麼答案是後者:會話變量根據會話ID 進行管理,該會話ID分配給客戶端

「會話」是指用戶/瀏覽器會話。新用戶/瀏覽器,新會話,新變量。

1

它在每個用戶會話中都是唯一的,但在該用戶會話中全局可用。如果一個腳本使用該鍵設置了一個變量,並且由同一用戶執行的第二個腳本使用相同的鍵設置了一個變量,則僅爲該用戶覆蓋該變量。