锁定用户,不允许mysql更新


locking out users, not allowing mysql update

当另一个用户已经在页面上时,我需要锁定一个用户。

应该仍然可以查看帖子并添加内容,但mysql中的函数to UPDATE不应该被允许,因为它可能会覆盖数据。

有人知道怎么做吗?我一直在拼命想办法找到答案。

系统使用php和mysql。当另一个用户在同一页面上时,用户已经收到消息。我只需要找到一种方法来"禁用"mysql UPDATE。。。

提前谢谢!

Youri

设置一个会话变量并跟踪它。假设变量的名称为"engaged"

如果(engaged=1){readonly}else{read_and_write;set engaged=1}

,则用户X访问该页面

不要试图处理这是数据库。如果你开始获取和持有锁,尤其是使用网络客户端,你就进入了一个痛苦的世界!

我就是这样处理的:

首先,创建一个表,让我们称之为RecordLockTable_nameRecord_idtimeout)让timeout是一个unix时间戳(以避免所有与日期时间有关的麻烦)让"table_name"answers"Record_Id"是一个复合主键。

每当用户加载页面时,请执行以下操作:

  1. DELETE FROM RecordLock WHERE timeout < CURRENT_TIMESTAMP这是为了清除所有过期的锁
  2. 将记录插入记录锁定(table_name、record_id、timestamp+timeout),其中timeout是锁定有效的秒数。这是为了确保如果有人离开浏览器或断开互联网连接,记录不会永远被锁定。您也可以SELECT查看锁是否存在,但请注意,根据处理事务的方式,可以在SELECTINSERT之间插入记录

如果插入失败,则说明有人已经获得了锁定(由于表和记录id上的PK)。您的应用程序应该知道该记录是只读的,不允许保存,并提醒用户该记录正在编辑中。

如果插入成功,则表示您已锁定。3.当当前用户关闭或保存记录时,删除RecordLock中的记录(否则它将过期,并可能阻止其他用户超过需要的时间)