如果浏览器关闭,则解锁表

时间:2014-09-29 13:48:55

标签: php sql sql-server laravel

如果有人想要编辑表格中的条目,我会将“已锁定”列设为true。如果用户关闭了浏览器/选项卡,我该如何做到最好,以便将值“锁定”写回假?

用ajax可以吗?当用户关闭浏览器/选项卡,然后激活ajax事件时,可以看到这一点?

还是有更好更可靠的方法吗?我使用laravel 4和MSSQL。

2 个答案:

答案 0 :(得分:0)

这非常危险并且非常不可靠,因此如果您需要解锁这些行,最好也对它们施加超时(locked_at列),索引列并搜索锁定的行以解锁已计时的行。但...

您可以通过浏览器卸载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;
    }
}

答案 1 :(得分:0)

Tricky做得可靠,有两种方法:

使用onbeforeunload就像Antonio建议的那样,你可以做一个ajax请求来释放锁吗?

在编辑时锁定记录x分钟,然后在锁定到期之前通过轮询ajax请求续订锁定。