gpt4 book ai didi

mysql - 如何在 webform 中打开时锁定 MySQL 资源并在关闭/完成编辑时释放

转载 作者:行者123 更新时间:2023-11-29 05:47:37 24 4
gpt4 key购买 nike

我正在构建一个应该同时为许多企业用户提供服务的平台。系统包含大量需要不时更新的记录。记录并适当存储每个更改非常重要。我在后端使用 Laravel 6 实现,在前端使用 Angular 6。前端通过HTTP请求向后端发送请求。数据存储在 MySQL 数据库中。

用户以只读或读写模式加载特定数据集。在只读模式下,不需要锁定资源,因为用户知道他只能读取数据。在读写模式下,数据集应该从用户请求数据的那一刻起被锁定,这样当有人正在处理数据时,不同的用户不能请求数据集。处理数据的用户然后在网络表单中打开数据以进行编辑。一旦用户保存、取消或关闭浏览器,数据就应该被解锁。

现在锁定数据库中的数据不是问题,我保留了一个表,其中列出了哪些数据集被锁定以供编辑,并且每当用户尝试访问此数据时都会抛出错误。当用户保存或取消时释放数据也不是问题,我只是释放表中的锁。

但是,由于在编辑时关闭浏览器时没有与后端的交互,数据集会无限期地保持锁定状态(我可以用时间戳和 cronjobs 等来解决这个问题,但这些不是公司基础设施的选项).我想知道如何解决这个问题?

我自己有一个想法,但不知道如何实现它,就是保持客户端和服务器之间的 HTTP 连接打开,并让服务器 (laravel) 执行一些代码以在连接关闭时释放锁.有什么提示、暗示或指示可以让我从这里继续吗?

最佳答案

使用不带 cron 作业的时间戳字段来指示记录被锁定的时间。如果当前时间晚于时间戳,则认为记录解锁。

当 Web 表单打开时,您可以每隔几分钟使用一个 ajax 请求来更新接下来几分钟的时间戳,从而保持记录锁定。

如果用户关闭浏览器窗口,则时间戳字段不会更新,记录将在几分钟内解锁。

关于mysql - 如何在 webform 中打开时锁定 MySQL 资源并在关闭/完成编辑时释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325041/

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