2012-11-13 37 views
0

我建立一个网站,用户可以控制摄像头将其左,右。每个用户都有一分钟的行动。网站上将会有一个排队系统,让用户逐一控制摄像机。 所以我的问题是以下,没有人有建议如何建立这个排队系统?是否有任何教程或代码可以使用?PHP前端用户队列

非常感谢!

+0

错误堆栈IMO - 看看的node.js + socket.io +你最喜欢持久化层。 – moonwave99

回答

1

有一个数据库表来跟踪例如队列:

队列(ID,SESSION_ID,START_TIME,LAST_UPDATE)

当用户打你的页面,把它们插入到队列表。在页面上使用常规的ajax调用(可能是30秒)来轮询服务器以查看当前用户是否打开。 如果用户是在表中的第一条记录,然后轮到他,所以更新START_TIME到当前的时间和发送Ajax响应告诉浏览器以显示与相机移动的按钮UI。

当按下按钮时,在服务器端确认事实上,这个用户轮到他的start_time是1分钟前的<,然后才允许执行操作。如果轮到他结束,请将其从桌面上删除,以便下一个用户成为第一个记录并轮到他,然后向浏览器发送响应,以便隐藏相机UI并发出消息。

除了在点击页面时插入到队列中,还要检查控制摄像头的用户是否有1分钟,如果是,则删除他的记录(或者可以在下面的cronjob上完成)。

每次AJAX调查火灾,更新用户last_update与时间戳。使用cronjob或仅在服务器端调用来检查队列中的任何记录是否具有比短时间早的last_update,例如, 30秒,如果有的话,删除它们,因为这些用户不再在页面上。这也可以防止攻击者试图填满你的队列。

在同一个cronjob上,检查用户是否已经填充了start_time,如果30秒后他还没有启动,请从队列中删除。

Ajax调用会使它很好的和无缝的,但它们不是必需的,如果用户已禁用JavaScript你仍然可以检测到并使用整个页面的元刷新来代替。