我正在开发一个处理多个并发用户的 php/mysql 应用程序。我正在考虑针对当前正在查看/编辑的记录进行锁定/警告时采取的最佳方法。

要避免的情况是两个用户查看记录,其中一个进行更改,然后另一个进行同样的操作 - 一个更改可能会覆盖前一个更改。

在最新版本的 WordPress 中,他们使用某种方法来检测这一点,但它似乎并不完全可靠 - 经常返回误报,至少根据我的经验。

我假设必须采用某种形式的 ajax 来“ping”应用程序并让它知道记录仍在查看/编辑(否则,用户可能只是关闭其浏览器窗口,然后应用程序如何知道这一点)。

我可以看到的另一个解决方案是在提交更新记录时检查上次更新时间,看看在此期间它是否已在其他地方更新 - 然后为用户提供继续或放弃自己的更改的选择。

也许我在解决方案方面找错了方向——人们实现这个(这一定是相当普遍的)要求的经验是什么?

有帮助吗?

解决方案

我这样做:存储在编辑表格的最后修改时间。在提交比较这次与存储在数据库中的时间。如果它们是相同的,锁定表,更新数据(与修改时间一起)和解锁该表。如果时间是不同的,通知用户关于它,并要求下一个步骤。

其他提示

与所述时间戳比较好主意。这是廉价地实施,这是一种廉价的操作,在生产环境中运行。你只需要编写发回给用户,由于他们的人打它并没有出现他们的写入/更新状态消息的逻辑。

也许考虑存储在一个名为类似“LastUpdateBy”字段每次更新的用户名,并返回该退给谁了他们的更新捷足先登用户。只是有点精密的用户。在法人意义尼斯,也许不是在一个环境中,它可能是不合适的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top