1

我们有一个 jquery/php/mysql 系统,允许用户登录并查看系统构建的视频以供在线观看。当用户开始查看视频时,该视频会被标记为这样。但是现在我们已经陷入了经典的基于浏览器的应用程序问题,即用户在没有完成审查的情况下离开或关闭浏览器。然后,该视频将进入不断被审查但从未完成,并且永远不会重新进入队列的边缘状态。

我们的选择是:

  • 构建一个服务(我们已经有其他服务)来查找超出持续时间边界的审阅会话并将它们重置回队列中。
  • 当该用户登录时,在持续时间边界之外重置审查会话。基本上,如果用户锁定视频以供审查,它将在下次登录时解锁。
  • 给我的一个建议是使用 php/apache 会话长度,并在到期时重置所有待处理的审核作业。我什至不知道在哪里实现它,因为这是共享服务器上的一个项目,所以它不应该是 apache 配置,但重置机制需要知道数据库凭据才能重置它。 ..
  • 每个人都讨厌的最糟糕的解决方案是阻止用户使用 javascript 导航,询问“你确定吗?!”

这个系统被一些聘请的评论者使用,所以我在这里并不完全与公众打交道,但我不能阻止用户共享登录以加快评论速度,这会淘汰上面的第二个选项,因为它会解锁视频正在由其他人使用相同的登录名进行审核。

4

3 回答 3

1

有两个不错的选择不会对您的服务器征税。任何一个:

  1. 每小时运行一次 cron-job 以查找超出持续时间边界的审查会话。这具有对最终用户透明的优点。但是,如果您不小心,可能会终止活动会话(假设用户在多个选项卡中操作)。

  2. 防止用户使用 JS 离开。老实说,这是我会做的,因为用户正在查看视频(如果他们只是在看视频,那会很糟糕,但因为他们知道他们应该在表演,所以没关系)。就说如果你现在离开,审查将被取消,你确定吗?.

老实说,我会选择#2。SO 使用它,它在这里运行良好。它不会适用于每一页,只是那些正在进行积极审查的页面......

于 2011-01-04T14:53:18.340 回答
0

当一个人在单个页面上查看单个视频时。您可以捕获将在页面卸载且客户端离开页面时触发的 JavaScript 卸载事件。您可以更改该视频的状态,甚至显示对话框并让用户决定。

也许乒乓球系统可能会有所帮助。在后面,您可以通过身份将 AJAX 调用绑定到视频。当该活动停止时,用户停止了。后台进程可以查找最新的 ping,例如,在一小时前,更改其状态。

于 2011-01-04T14:52:03.593 回答
0

您的第一个选择是您最好的选择。您可以在页面上设置一个 JavaScript 计时器,在浏览器窗口打开时更新视频的 lastestActivity 记录,这样您就不会陷入需要太长时间的审查的角落,并且解锁器会过早释放锁定。

选项 2 存在问题的原因有几个,其中一些已经被提及,但考虑到审阅者可能会在几天内(假期?)不登录,这将不必要地解锁视频太长时间。

选项 4 (Javascript onBeforeUnload) 在浏览器崩溃、操作系统崩溃或电源故障的常见情况下不会涵盖您。但这是您可以另外实现的。

于 2011-01-04T15:02:35.350 回答