我正在开发一个处理多个同时用户的php / mysql应用程序.我正在考虑对当前正在查看/编辑的记录进行锁定/警告时采取的最佳方法.
要避免的情况是两个用户查看记录,一个进行更改,另一个进行同样的操作 – 可能会有一个更改覆盖前一个.
在最新版本的WordPress中,他们使用某种方法来检测这一点,但它似乎并不完全可靠 – 通常会返回误报,至少在我的经验中.
我假设必须使用某种形式的ajax来“ping”应用程序并让它知道记录仍在被查看/编辑(否则,用户可能只是关闭他们的浏览器窗口,然后应用程序将如何知道).
我可以看到的另一个解决方案是检查提交更新记录的最后更新时间,以查看在此期间是否已在其他地方更新过 – 然后让用户选择继续或放弃他们自己的更改.
也许我在一个解决方案上咆哮错误的树 – 人们实现这个(必须是一个相当普遍的)要求的经验是什么?
解决方法:
我会这样做:在编辑表单中存储最后一次修改的时间.将提交时间与存储在数据库中的时间进行比较.如果它们相同,则锁定表,更新数据(以及修改时间)并解锁表.如果时间不同,请通知用户并请求下一步.