我目前正在开发一个web应用程序,在那里我遇到了一些小问题。在该系统中,多个用户可以登录到同一页面并更新数据(一系列复选框、下拉框和文本字段)。
问题是,如果一个用户已经在加载旧数据的页面上,并且已经更新了旧数据,并提交了他们的更改,这将更新所有内容,那么数据可能会被覆盖。
对如何解决这个问题有什么建议吗?我目前只处理纯文本文件。
发布于 2010-08-20 22:31:13
我目前只处理纯文本文件。
建议1.使用数据库。
建议2.使用锁文件。使用操作系统级API调用打开具有排它锁的文件。第一个获取此文件的用户具有对数据的独占访问权限。当该用户完成他们的事务时,关闭文件,释放操作系统级别的锁。
建议3.不要“更新”文件。记录更改的历史记录。然后,您可以从日志中读取用户名和时间戳,以查找最新版本。
如果你这样做,你需要让每个请求这样做。
此外,您可能希望有两个文件。一种是“当前”数据,另一种是历史变化。这可以使查找当前数据的速度更快,因为它是当前状态文件中的唯一记录。
另一种选择是在你的文件中有一个固定大小的文本块的“头”。每次追加时,还会使用到最后一条记录的偏移量以及最后一次更改的时间戳seek(0,0)并刷新标头。
发布于 2010-08-20 22:21:09
在保存新数据时,您可以将数据的修改日期与用户开始编辑的时间进行比较。
如果在用户进行更改时进行了修改,您可以向用户显示一条消息,询问他们采用哪个版本,或者允许他合并这两个版本。
这个问题已经被svn、git等修订系统以完全相同的方式解决了。
发布于 2010-08-20 22:18:17
您可以创建一个附加表,并在其中存储所有信息以及userID,因此您将能够使用joins访问用户插入的所有数据。
https://stackoverflow.com/questions/3531693
复制相似问题