锁定用户,不允许更新mysql

时间:2012-03-14 22:12:50

标签: php mysql

当其他用户已经在页面上时,我需要锁定用户。

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

有谁知道怎么做?我一直在试图想出答案而自杀。

系统使用php和mysql。当另一个用户在同一页面上时,用户已经收到消息。我需要的是找到一种'禁用'mysql UPDATE ...

的方法

提前谢谢!

尤里

2 个答案:

答案 0 :(得分:0)

设置会话变量并跟踪它。假设变量的名称是“参与”

用户X访问该页面,如果(参与== 1){readonly} else {read_and_write; set engaged = 1}

答案 1 :(得分:0)

不要试图处理这是数据库。如果您开始获取并持有锁,特别是对于Web客户端,您将进入痛苦的世界!

这就是我处理它的方式:

首先,创建一个表格,让我们称之为RecordLockTable_nameRecord_idtimeout)让超时成为一个unix时间戳(以保存所有的错误)使用'table_name'和'Record_Id'作为复合主键。

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

  1. DELETE FROM RecordLock WHERE timeout < CURRENT_TIMESTAMP这是为了清除所有过期的锁。
  2. 将记录插入记录锁定(table_name,record_id,timestamp + timeout),其中timeout是锁定有效的秒数。这是为了确保如果某人离开浏览器或断开互联网连接,记录不会永久锁定。您还可以SELECT查看锁定是否存在,但请注意,您可以在SELECTINSERT之间插入记录,具体取决于您处理交易的方式。
  3. 如果插入失败,有人已经获得了锁(由于表上的PK和记录ID)您的应用程序应该知道该记录是read_only并且禁止保存,并警告用户该记录正在现在编辑。

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