【发布时间】:2010-08-20 10:51:05
【问题描述】:
我正在研究类似于 pastebin 的东西(是的,它是 通用的),但允许多用户编辑。明显的问题是多个用户试图编辑同一个文件。我正在考虑当一个用户正在处理文件时锁定文件(这不是最好的解决方案,但我不需要任何太复杂的东西),但为了防止/警告用户,我显然需要一个用于监控每个用户的编辑会话的系统。使用数据库和 ajax,我正在考虑两种解决方案。
第一种方法是让编辑页面以任意间隔(例如一分钟)对服务器执行 ping 操作,它会更新数据库中的编辑会话条目。然后下次脚本请求编辑时,它会检查最近的 ping,如果最近的 ping 是另一个任意时间之前,比如五分钟,那么我们假设之前的用户已经停止,并且可以再次编辑文件。当然,这种方法的问题在于,前一个用户已经退出的假设只是一个假设。他可能是因为 wi-fi 连接不稳定,只是在 10 分钟内掉线,一直开着窗户。
当然,为了处理这个问题,我们必须让服务器响应来自先前关闭会话的新请求并报错,告诉客户端向用户指出他的会话已经结束,然后通过例如将其另存为服务器上的另一个文件并要求用户手动合并它等来处理它。不用说,这对最终用户来说是相当可怕的。
所以我开始考虑另一种解决方案。当用户会话结束时,也有可能触发unload 事件,但我不确定这是否会可靠地工作。
对于这个问题,还有其他更优雅的解决方案吗?
【问题讨论】:
标签: javascript ajax session conflict