Php 在浏览器中编辑时锁定文件/内容。

Php 在浏览器中编辑时锁定文件/内容。,php,Php,在我的一个项目中,允许用户编辑同一文件。这是小组工作,组中的最大用户数为4。很少有人会同时编辑,但也有可能。我正在使用ckeditor来显示内容。如何在编辑内容时锁定内容? 对于上述情况,如果一个用户打开内容进行编辑,然后从不保存并保持窗口打开,会发生什么情况。是否可以保存内容,释放锁以供其他用户编辑?如果第一个用户回到办公桌,他们会看到“内容已更改,请刷新”的消息 我正在使用php,mysql 谢谢你需要三个部分来完成这项工作 您需要在数据库中添加一个字段,以指示何时编辑文件。创建一个名为“L

在我的一个项目中,允许用户编辑同一文件。这是小组工作,组中的最大用户数为4。很少有人会同时编辑,但也有可能。我正在使用ckeditor来显示内容。如何在编辑内容时锁定内容? 对于上述情况,如果一个用户打开内容进行编辑,然后从不保存并保持窗口打开,会发生什么情况。是否可以保存内容,释放锁以供其他用户编辑?如果第一个用户回到办公桌,他们会看到“内容已更改,请刷新”的消息

我正在使用php,mysql


谢谢

你需要三个部分来完成这项工作

  • 您需要在数据库中添加一个字段,以指示何时编辑文件。创建一个名为“LastUsed”的字段,并记录打开文件进行编辑的时间戳。当有人试图打开文件时,检查时间戳,如果时间戳是最近的(比如最后5分钟),则不允许第二个用户打开它

  • 在允许编辑文件的页面上,每隔几分钟运行一次ajax请求。它所需要做的就是将正在编辑的文件的时间戳更新为当前日期和时间

  • 然后,您可以运行一个计时器,一旦到达某个点,ajax请求就会停止,这样数据库中的时间戳就会过期。但是,每次用户执行操作时都要重置计时器。这样,只要用户正在做某事,计时器就会重置,ajax请求就可以继续更新数据库中的时间戳。如果用户在给定的时间内没有执行任何操作,计时器将运行,ajax请求将停止,时间戳将过期,其他人可以打开它进行编辑。您还可以使用同一个计时器显示编辑会话已过期的消息或其他消息

  • 它基本上是这样工作的:

    • 当用户编辑文件时,ajax请求会不断更新“LastUsed”时间戳

    • 只要该页面打开以编辑文件,ajax请求就会使数据库中的时间戳保持最新

    • 如果用户保持页面打开但没有做任何事情,计时器将运行并停止ajax请求,这将允许其他人编辑文件

    • 一旦用户离开页面,ajax请求将无法再更新时间戳。这样,如果一个人刚离开页面,其他人就可以编辑该文件

    • 因此,当第二个用户试图编辑文件时,如果“LastUsed”时间戳在最后5分钟内,则您知道其他人正在编辑该文件。如果时间戳大于5分钟,则您知道当前没有人打开该文件进行编辑,因此第二个用户可以对其进行编辑


    谢谢。我知道该怎么做了。如果遇到任何问题,我会回来的。没问题。如果您认为这回答了您的问题,请随时将其标记为已接受的答案。对我也很有用+1问得好。我要做这方面的工作。+1