当其他用户已经在页面上时,我需要锁定用户。
仍然可以查看帖子并添加内容,但不应允许mysql中的函数UPDATE,因为它可能会覆盖数据。
有谁知道怎么做?我一直在试图想出答案而自杀。
系统使用php和mysql。当另一个用户在同一页面上时,用户已经收到消息。我需要的是找到一种'禁用'mysql UPDATE ...
的方法提前谢谢!
尤里
答案 0 :(得分:0)
设置会话变量并跟踪它。假设变量的名称是“参与”
用户X访问该页面,如果(参与== 1){readonly} else {read_and_write; set engaged = 1}
答案 1 :(得分:0)
不要试图处理这是数据库。如果您开始获取并持有锁,特别是对于Web客户端,您将进入痛苦的世界!
这就是我处理它的方式:
首先,创建一个表格,让我们称之为RecordLock
(Table_name
,Record_id
,timeout
)让超时成为一个unix时间戳(以保存所有的错误)使用'table_name'和'Record_Id'作为复合主键。
每当用户加载页面时,请执行以下操作:
DELETE FROM RecordLock WHERE timeout < CURRENT_TIMESTAMP
这是为了清除所有过期的锁。 SELECT
查看锁定是否存在,但请注意,您可以在SELECT
和INSERT
之间插入记录,具体取决于您处理交易的方式。如果插入失败,有人已经获得了锁(由于表上的PK和记录ID)您的应用程序应该知道该记录是read_only并且禁止保存,并警告用户该记录正在现在编辑。
如果插入成功,则锁定。 3.当前用户关闭或保存记录时,删除RecordLock中的记录(否则它将过期并可能阻止其他用户超过需要)