當另一個用戶已經在頁面上時,我需要鎖定用戶。鎖定用戶,不允許mysql更新
它應該仍然可以查看帖子並添加東西,但mysql中的函數更新不應該被允許,因爲它可能會覆蓋數據。
有誰知道如何做到這一點?我一直在努力想出答案。
系統使用php和mysql。當另一個用戶在同一頁面上時,用戶已經收到一條消息。我所需要的是找到一種方法來'禁用'mysql更新...
謝謝你提前!
Youri
當另一個用戶已經在頁面上時,我需要鎖定用戶。鎖定用戶,不允許mysql更新
它應該仍然可以查看帖子並添加東西,但mysql中的函數更新不應該被允許,因爲它可能會覆蓋數據。
有誰知道如何做到這一點?我一直在努力想出答案。
系統使用php和mysql。當另一個用戶在同一頁面上時,用戶已經收到一條消息。我所需要的是找到一種方法來'禁用'mysql更新...
謝謝你提前!
Youri
設置會話變量並跟蹤它。假設變量的名稱是「參與」
用戶X訪問頁面,如果(參與== 1){readonly} else {read_and_write; set engaged = 1}
不要試圖處理這是數據庫。如果你開始購買和持有鎖,尤其是與網絡客戶端,你正在進入一個痛苦的世界!
這是我如何處理它:
首先,創建一個表,讓我們把它RecordLock
(Table_name
,Record_id
,timeout
)設超時是UNIX時間戳(保存所有有關使用日期時間的碴)讓' table_name'和'Record_Id'是一個複合主鍵。
每當用戶加載一個頁面,請執行下列操作:
DELETE FROM RecordLock WHERE timeout < CURRENT_TIMESTAMP
這是清除任何過期的鎖。SELECT
查看鎖是否存在,但請注意,根據您如何處理交易,可以在您的SELECT
和INSERT
之間插入一條記錄。如果插入失敗,某人已經獲得鎖定(由於表和記錄ID上的PK),您的應用程序應該知道該記錄是read_only並且不允許保存,並且警告用戶記錄正在編輯中。
如果插入成功,則鎖定。 3.噹噹前用戶關閉或保存記錄時,刪除RecordLock中的記錄(否則它只會過期並可能阻止其他用戶超過需要的時間)
沒關係,我已經完成了它。現在的問題是,當用戶按下瀏覽器上的後退按鈕時,它們會返回舊錶單,然後可以再次保存。幫幫我 – Youri 2012-03-19 16:09:51
現在某個用戶將如何知道另一個用戶正在編輯頁面? – kirilloid 2012-03-14 22:28:31
呵呵?被佔用的變量將被設置爲1.當用戶完成該頁面時,重置該變量。 – Stewie 2012-03-14 22:30:52
在php中是否有全局會話?不同用戶之間共享。 – kirilloid 2012-03-14 22:38:17