2009-12-09 58 views
4

我如何讓用戶A和用戶B擁有同一個對象實例?我想這會在兩個不同的會議。跨多個會話的PHP共享對象

+0

什麼樣的對象?它是數據還是數據庫連接? – Wayne 2009-12-09 01:46:34

+0

會有幾個數據庫對象,員工對象。我想使用單例模式。我會在員工內部設置一個鎖定機制,以防止員工同時由兩個人工編輯器進行編輯。 – Jeremiah 2009-12-09 01:59:27

回答

2

一種方法是序列化對象,然後將其放入文件或數據庫中以在請求之間共享。但是,如果兩個請求同時發生,它們將分別具有不同的對象來處理,並且最後一個要完成的請求將是唯一將被保存的請求。所以你需要某種鎖定機制來防止這種情況。

http://ca.php.net/manual/en/function.serialize.php

+2

通過將序列化存儲在序列化記錄字段中具有鎖定用戶標識的表中進行鎖定。然後用「Update ser set uid = ME where ME is NULL;」來鎖定,通過選擇back來檢查是否獲得鎖定,在更新序列化時通過將uid清零來釋放鎖定。 – Don 2009-12-09 02:16:13

+0

如果兩個用戶同時登錄,他們共享的對象是否同步?或者就像是讓物體處於兩種不同的狀態。 – Jeremiah 2009-12-09 15:41:59

+0

這就好像讓對象處於兩種不同的狀態。由於每個請求都發生在它自己的進程中,所以沒有簡單的方法可以在腳本實例之間共享內存中的對象。 – 2009-12-10 09:42:41