当另一个用户已经在页面上时,我需要锁定用户。锁定用户,不允许mysql更新
它应该仍然可以查看帖子并添加东西,但mysql中的函数更新不应该被允许,因为它可能会覆盖数据。
有谁知道如何做到这一点?我一直在努力想出答案。
系统使用php和mysql。当另一个用户在同一页面上时,用户已经收到一条消息。我所需要的是找到一种方法来'禁用'mysql更新...
谢谢你提前!
Youri
当另一个用户已经在页面上时,我需要锁定用户。锁定用户,不允许mysql更新
它应该仍然可以查看帖子并添加东西,但mysql中的函数更新不应该被允许,因为它可能会覆盖数据。
有谁知道如何做到这一点?我一直在努力想出答案。
系统使用php和mysql。当另一个用户在同一页面上时,用户已经收到一条消息。我所需要的是找到一种方法来'禁用'mysql更新...
谢谢你提前!
Youri
设置会话变量并跟踪它。假设变量的名称是“参与”
用户X访问页面,如果(参与== 1){readonly} else {read_and_write; set engaged = 1}
不要试图处理这是数据库。如果你开始购买和持有锁,尤其是与网络客户端,你正在进入一个痛苦的世界!
这是我如何处理它:
首先,创建一个表,让我们把它RecordLock
(Table_name
,Record_id
,timeout
)设超时是UNIX时间戳(保存所有有关使用日期时间的碴)让' table_name'和'Record_Id'是一个复合主键。
每当用户加载一个页面,请执行下列操作:
DELETE FROM RecordLock WHERE timeout < CURRENT_TIMESTAMP
这是清除任何过期的锁。SELECT
查看锁是否存在,但请注意,根据您如何处理交易,可以在您的SELECT
和INSERT
之间插入一条记录。如果插入失败,某人已经获得锁定(由于表和记录ID上的PK),您的应用程序应该知道该记录是read_only并且不允许保存,并且警告用户记录正在编辑中。
如果插入成功,则锁定。 3.当当前用户关闭或保存记录时,删除RecordLock中的记录(否则它只会过期并可能阻止其他用户超过需要的时间)
没关系,我已经完成了它。现在的问题是,当用户按下浏览器上的后退按钮时,它们会返回旧表单,然后可以再次保存。帮帮我 – Youri 2012-03-19 16:09:51
现在某个用户将如何知道另一个用户正在编辑页面? – kirilloid 2012-03-14 22:28:31
呵呵?被占用的变量将被设置为1.当用户完成该页面时,重置该变量。 – Stewie 2012-03-14 22:30:52
在php中是否有全局会话?不同用户之间共享。 – kirilloid 2012-03-14 22:38:17