代码之家  ›  专栏  ›  技术社区  ›  Tim Cooper

数据更新冲突

  •  1
  • Tim Cooper  · 技术社区  · 14 年前

    问题是,如果一个用户已经在加载旧数据的页面上,并且已经更新了,并且提交了他们的更改,从而更新了所有内容,那么数据可能会被覆盖。

    对如何解决这个问题有什么建议吗?我现在只处理纯文本文件。

    3 回复  |  直到 9 年前
        1
  •  2
  •   S.Lott    14 年前

    建议2。使用锁定文件。使用OS级API调用以独占方式打开文件 锁上。获取此文件的第一个用户对数据具有独占访问权限。什么时候 用户完成事务,关闭文件,释放操作系统级锁。

    建议3。不要“更新”文件。记录更改的历史记录。然后可以从日志中读取用户名和时间戳以查找最新版本。

    如果你这样做,你需要让每个请求都这样做。

    此外,您可能需要两个文件。一个是“当前”数据,另一个是历史变化。这样可以更快地找到当前数据,因为它是当前状态文件中的唯一记录。

    seek(0,0) 并用最后一条记录的偏移量以及最后一次更改的时间戳刷新标头。

        2
  •  1
  •   André Hoffmann    14 年前

    保存新数据时,可以将数据修改的日期与用户开始编辑的时间进行比较。

    如果在用户进行更改时进行了修改,则可以向用户显示一条消息,并询问用户要采用哪个版本,或者允许用户合并这两个版本。

    这个问题已经被修订系统解决了,比如svn,git,等等。

        3
  •  0
  •   Centurion    14 年前