gpt4 book ai didi

php - 防止多人编辑同一个表单

转载 作者:行者123 更新时间:2023-12-02 04:03:05 28 4
gpt4 key购买 nike

我有一个 Laravel 应用程序,可供多个用户同时使用,他们都可以编辑我们系统中的一些项目。

我不希望有 2 个人同时编辑同一个表单。

如果发生这种情况,我想告诉其他用户当前表单已锁定并且正在由用户名进行编辑。

如果用户随后离开或提交表单,则该表单将打开以供其他用户使用。

我已经检查了乐观锁定和悲观锁定,我认为这对我来说不正确

我正在考虑做的是在正在编辑的表中创建一个唯一标识符,如果页面上的用户具有该标识符,我将锁定所有其他标识符,但是我怎么知道是否用户关闭浏览器窗口?那么所有其他用户仍然无法访问该页面/表单?

你们建议我如何解决这个问题?

最佳答案

将可为空的 locked_to 列添加到您的 projects 数据库中。然后在 Project 模型中将此字段添加到 $dates 数组中,以便它可以自动转换为 Carbon 实例。

当有人打开项目进行编辑时,只需将 locked_to 字段设置为 future 日期,我认为 +5 秒可能是一个不错的选择。编辑表单应每 5 秒发送一次 ajax 请求,以使项目在接下来的 5 秒内保持锁定。

当用户保存项目更改时,锁定将停止,因为不会发送 ajax 请求。在这种情况下,您还有一个字段可以告诉您上次打开项目的时间。

如果 locked_to 字段等于或大于 new Carbon 实例,用户将无法编辑项目。

更新 - 更多信息

无需清除该字段。如果用户没有完成编辑 - 他只是重新加载页面,导航到其他页面,关闭窗口或浏览器,死亡等...用于锁定的ajax将不再执行,因此在接下来的5秒内当前编辑的项目将被解锁- locked_to 字段将包含早于当前的日期。

关于php - 防止多人编辑同一个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com