2014-09-29 25 views
1

如果有人想編輯一個表中的條目,我把一列「鎖定」爲真。如果用戶關閉了瀏覽器/選項卡,我該如何做到最好,以便將值由「鎖定」寫回false?解鎖表,如果瀏覽器被關閉

這是可能的使用Ajax?這可以在用戶關閉瀏覽器/選項卡時看到,然後發出ajax事件?

還是有更好,更可靠的方法?我使用laravel 4和MSSQL工作。

+0

這幾乎是不可能可靠地做到這一點。另外,我想你會想爲你的問題添加一些額外的標籤。 – gpgekko 2014-09-29 13:51:43

+1

您想要處理併發編輯問題還是要顯式拒絕對您認爲正在編輯的數據進行訪問?對於前者,您將使用版本時間戳而不是布爾值,對於後者,您不能依賴外部通知,因此您必須依賴超時值。 – 2014-09-29 14:00:56

回答

0

這是非常危險的,非常不可靠,所以如果你需要解鎖的行,你最好把超時他們太(一locked_at列),索引列和搜索鎖定行解鎖timeouted的。但是......

您可以勾上瀏覽器的JavaScript卸載事件幫你:

window.onbeforeunload = function(event) { 
    var s; 
    event = event || window.event; 
    if (requestsPending > 0) { 
     s = "Your most recent changes are still being saved. " + 
      "If you close the window now, they may not be saved."; 
     event.returnValue = s; 
     return s; 
    } 
} 
0

整蠱做可靠,一對夫婦的方法:

使用onbeforeunload安東尼奧建議,你可以做一個ajax請求釋放鎖?

鎖定對編輯x分鐘的記錄,然後通過延長鎖定到期之前輪詢Ajax請求的鎖。