在我的一个项目中,允许用户编辑同一文件。这是小组工作,小组中的用户最多为 4 人。同时编辑的情况很少见,但有可能。我正在使用 ckeditor 显示内容。如何在编辑内容时锁定内容?
对于上述情况,如果用户打开内容进行编辑,然后从不保存并保持窗口打开,将会发生什么情况。是否可以保存内容,解除锁定以供其他用户编辑?如果第一个用户回到办公桌,他们应该会看到“内容已更改,请刷新”的消息。
我使用的是php、mysql。
Thanks
您需要三个部分才能完成这项工作。
您需要在数据库中添加一个字段来指示文件何时被编辑。创建一个名为“LastUsed”的字段,并记录打开文件进行编辑的时间戳。当有人尝试打开文件时,请检查时间戳,如果时间戳是最近的(例如最近 5 分钟),则不允许第二个用户打开该文件。
在允许编辑文件的页面上,每隔几分钟运行一次 ajax 请求。它所需要做的就是将正在编辑的文件的时间戳更新为当前日期和时间。
然后,您可以运行一个计时器,一旦到达某个点,ajax 请求就会停止,这样数据库中的时间戳就会过期。但是,每次用户采取操作时都会重置该计时器。这样只要用户在做某事,计时器就会重置,并且允许 ajax 请求继续更新数据库中的时间戳。如果用户在给定时间内没有执行任何操作,计时器就会计时,ajax 请求就会停止,时间戳就会过期,其他人就可以打开它进行编辑。您还可以使用同一计时器来显示编辑会话已过期或其他内容的消息。
它基本上是这样工作的:
当用户编辑文件时,ajax 请求会不断更新“LastUsed”时间戳。
只要该页面打开以编辑文件,ajax 请求就会使数据库中的时间戳保持最新。
如果该人保持页面打开但没有执行任何操作,计时器将运行并停止 ajax 请求,这将允许其他人编辑该文件。
一旦用户离开页面,ajax 请求将无法再更新时间戳。这样,如果一个人离开页面,其他人就可以编辑该文件。
因此,当第二个用户尝试编辑该文件时,如果“LastUsed”时间戳在过去 5 分钟内,您就知道其他人正在编辑该文件。如果时间戳大于 5 分钟,您就知道当前没有人打开该文件进行编辑,因此第二个用户可以编辑它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)