解决思路 - 多人同一时间段编辑同一篇文章导致数据丢失

现目前我能想到的解决办法有两种:

1、容易想到的思路是同一时间段只允许一个人编辑,其他人只有读的权限。

直观感觉:准备开始编辑一篇文章时,就将文章的状态改为“编辑中”,其他人尝试编辑时,提示有人正在编辑,并以只读方式呈现文章,当编辑的人提交文章后,将文章的状态改为“正常”,其他人就有了编辑的机会。

下面说说可能遇到的种种问题:

问题一:

编辑的人一直不编辑文档或很久才编辑,导致其他人无法编辑,影响工作进度;
编辑的人直接关闭了文章或浏览器,文章状态没有重置回“正常”;
提交保存的过程中程序发生错误,没能重置文章状态为“正常”;

解决思路:设置编辑权限默认失效时间,具体失效时间我想可以设置为正常编辑时间加上1~2分钟,过期后,其他人可以获得编辑权限。

问题二:

如果是正常的编辑过程,时间超过了失效时间怎么办呢?

解决思路:更新失效时间,实时还是定时去更新呢?显然定时更好些,实时的话对服务器压力比较大。

问题三:

什么情况下去更新,怎么更新?

解决思路:用户正常编辑就去更新,每个周期都去监听键盘敲击次数,如果次数大于0,就去更新。后端数据用ajax去更新,前端重置过期时间。

最后,如果过期了,页面弹窗提醒:关闭页面或者重新刷新,后端不做任何处理,因为此时此刻编辑权限已经开放了。

2、允许多人同时编辑文档,提交时判断更新时间。

进入编辑页面时前端用变量保存文档最后更新时间,提交文档时获取此刻文档最后更新时间,如果和前端页面保存的更新时间不相等,说明编辑过程中文档已经被别人修改,这时页面分为两部分,一部分是服务器上的文档内容,另一部分是用户编辑的文档内容。让用户选择取消提交和提交覆盖。

第二种方式是不是很简单,而且很科学。第一种虽然也能实现,但容易忽略某些情况,虽然可以逐步完善,但真的很麻烦。如果是我,我会选择第二种方式。

发布了3 篇原创文章 · 获赞 2 · 访问量 2189

猜你喜欢

转载自blog.csdn.net/zhongzhen7355/article/details/90116341