PHP - 如何判断页面是否正在使用

时间:2014-08-05 04:43:48

标签: php mysql web content-management-system wysiwyg

所以我基本上在网站上有一个WYSIWIG编辑器。

我希望能够判断用户当前是否正在编辑某个页面,以防止其他用户在“忙碌”时输入该页面。

我实现了一个在mySQL中标记文章繁忙的系统。当用户进入页面进行编辑时,它会将其标记为忙碌,并且通过将函数绑定到 window.onbeforeunload 来取消标记。

但是,如果页面意外关闭,则不会调用window.onbeforeunload,例如浏览器崩溃或强制关闭。这导致一些文章在不应该被标记为忙时。

有没有更合适的方法来实现它?

2 个答案:

答案 0 :(得分:3)

如果页面定期(例如每10秒一次)请求" keepalive"页面(包括URL中的当前时间,因此页面不会被缓存!),并且最后一个时间戳保存在数据库中,然后您可以超时 - 任何"打开"没有" keepalive"的网页要求,比方说,30秒,可能不再开放。

答案 1 :(得分:1)

也许最便携的方式是将页面标记为"忙碌"加载编辑页面时,经过一段时间(可能是3分钟)后取消标记。然后,每隔一分钟发出一次AJAX请求,以更新忙碌标记。这样,只要页面打开并且正在进行AJAX请求,页面就会标记为忙碌。

如果浏览器支持,您仍然可以保持onbeforeunload事件处理程序取消标记页面,但如果浏览器不支持,那么它将在用户关闭页面后的3分钟内取消标记。