用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5646|回复: 12
收起左侧

[讨论/交流] 实现记录锁有什么好的办法?

  [复制链接]
发表于 2011-4-26 12:43:03 | 显示全部楼层 |阅读模式
RT,如何防止二人或者多人编辑同一条记录,除了使用心跳的方法,还有没有什么其它好的方法。
发表于 2011-4-26 14:41:44 | 显示全部楼层
RT,如何防止二人或者多人编辑同一条记录,除了使用心跳的方法,还有没有什么其它好的方法。 ...
longjianghu 发表于 2011-4-26 12:43


我想知道心跳方法是怎么样的,哈。
 楼主| 发表于 2011-4-26 16:28:51 | 显示全部楼层
回复 2# rockics


    用JS定期向服务器传递数据,更新一个值,比如时间戳。
发表于 2011-4-26 16:52:02 | 显示全部楼层
本帖最后由 jeongee 于 2011-4-26 16:53 编辑

回复 3# longjianghu


   谁进入编辑了就给这条记录一个状态,locked,lock_time(更多的可以记录谁在编辑等等),别人进入读取的时候判断是否locked了,如果没有locked或者locked的时间超过你设定的某个时间了(防止有人编辑时间过长,或编辑迟迟不提交),就让这个人可以编辑,否则提示不可以编辑。
  编辑的人在update之后就给locked释放

没必要心跳吧,除非你的程序要求实时性很强
 楼主| 发表于 2011-4-26 20:42:18 | 显示全部楼层
回复 4# jeongee


   你这个我也想过但有一个问题是如果某一个人打开编辑的时候掉线怎么处理?
发表于 2011-4-26 21:51:35 | 显示全部楼层
回复 5# longjianghu


   呵呵,设置个合理的lock_time吧
 楼主| 发表于 2011-4-29 14:24:34 | 显示全部楼层
回复 6# jeongee


    这个有些负作用。
发表于 2011-4-29 14:29:26 | 显示全部楼层
回复 7# longjianghu


   呵呵,看项目具体要求,再决定用什么方法了
发表于 2011-5-3 08:32:09 | 显示全部楼层
如果IP量不高,可以使用locked + expired time
 楼主| 发表于 2011-5-3 08:45:39 | 显示全部楼层
回复 9# moonster


    你这个方法都知道,关键是效率问题!

本版积分规则