策略:用户离开页面时解锁文档

时间:2010-01-10 10:31:27

标签: php session

我正在构建的当前应用程序是一个协作应用程序,它将几个用户保存在可以访问一组项目的“团队”或公司中。每个项目都有自己的文件。

我希望保护团队用户不会相互竞争,因此我构建了一个系统,其中第一个用户锁定文档以访问它们。当出现以下任何情况时,文档将被解锁:

  • 用户关闭文档
  • 用户退出并销毁他/她的会话
  • 用户离开但没有注销,但会话垃圾收集解锁了文档

所有这一切都运作良好,但还有一件事需要解决......

我需要知道用户何时离开项目而不解锁文档(基本上只是离开页面),因为他可以进入另一个项目并编辑另一个文档。

到目前为止,我想到的唯一选择是在我的基本控制器类(CodeIgniter MVC)中捕获http referrer并在url上搜索它是否与项目匹配...然后解锁文档。

这不是一个很好的选择,因为http referrer变量是不可预测的。

你会做什么? (同一个用户在两个窗口中位于同一文档中是一个可以忽略的问题)

2 个答案:

答案 0 :(得分:1)

在会话中保留对他们当前正在编辑的文档的引用,然后在文档打开时检查它是否有所不同?如果是这样,解锁前一个?

答案 1 :(得分:1)

解决这个问题的方法之一是使用window.onUnload Javascript事件向服务器发送信号,告知页面正在离开。最好在当前页面上使用AJAX进行通信,因为这些天大多数浏览器都会阻止弹出窗口。