2012-11-13 46 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你仍然可以檢測到並使用整個頁面的元刷新來代替。