我一直在思考为我参与的应用程序开发一些简单的记录锁定功能。有几个用户会花费数小时来完成记录的编辑,这会导致当其他人想要修改该记录时出现问题。目前没有涉及任何锁定。
我不确定在我的情况下乐观锁定是否可靠,因为记录是通过AJAX请求保存的。我正在考虑应用某种悲观锁定;使用两个字段,如locking_user_id和locking_timestamp,我可以跟踪谁打开了记录以及上次打开时间。
但是,由于用户可能会将其打开数小时,我如何知道用户是否放弃了或只是在努力工作?我不想强制他们每5分钟更新一次——但这可能是一种可能性(每5分钟保存一次AJAX)。
也许一个jQuery进程可以在用户工作时计数,并每5分钟触发一个AJAX请求(getJSON)来更新locking_timestamp。这样我就可以维护谁正在处理记录。当时间戳变得“旧”时,我可以假设用户不再使用该记录。有没有人有这种锁定的经验?
我不确定在我的情况下乐观锁定是否可靠,因为记录是通过AJAX请求保存的。我正在考虑应用某种悲观锁定;使用两个字段,如locking_user_id和locking_timestamp,我可以跟踪谁打开了记录以及上次打开时间。
但是,由于用户可能会将其打开数小时,我如何知道用户是否放弃了或只是在努力工作?我不想强制他们每5分钟更新一次——但这可能是一种可能性(每5分钟保存一次AJAX)。
也许一个jQuery进程可以在用户工作时计数,并每5分钟触发一个AJAX请求(getJSON)来更新locking_timestamp。这样我就可以维护谁正在处理记录。当时间戳变得“旧”时,我可以假设用户不再使用该记录。有没有人有这种锁定的经验?
setInterval
函数定期执行你的AJAX调用。 - linepogl