0

ユーザーが Web カメラを制御して左右に回転できるサイトを構築しています。すべてのユーザーは 1 分間のアクションを取得します。サイトには、ユーザーが 1 人ずつカメラを制御できるようにするキューイング システムが用意される予定です。私の質問は次のとおりです。このキューイングシステムを構築する方法について誰か提案がありますか? 使用できるチュートリアルやコードはありますか?

どうもありがとう!

4

1 に答える 1

1

たとえば、キュ​​ーを追跡するためのデータベース テーブルを用意します。

キュー (id、session_id、start_time、last_update)

ユーザーがページにアクセスしたら、それらをキュー テーブルに挿入します。ページで通常の ajax 呼び出し (おそらく 30 秒) を使用して、サーバーをポーリングし、現在のユーザーがターンアップしているかどうかを確認します。ユーザーがテーブルの最初のレコードである場合は、そのユーザーの番なので、start_time を現在の時刻に更新し、カメラ移動用のボタンを備えた UI を表示するようにブラウザーに指示する ajax 応答を送信します。

ボタンが押されたら、アクションを許可する前に、サーバー側で、このユーザーのターンが事実であり、ユーザーの start_time が 1 分前であったことを確認します。彼の順番が終わったら、テーブルから彼を削除して、次のユーザーが最初のレコードになり、順番を取得してから、ブラウザに応答を送信して、カメラ UI を非表示にしてメッセージを表示できるようにします。

ページにヒットしたときにキューに挿入するだけでなく、カメラを制御しているユーザーが 1 分間経過したかどうかを確認し、そうであれば、その記録を削除します (または、以下の cronjob で実行できます)。

ajax 投票が発生するたびlast_updateに、タイムスタンプでユーザーを更新します。cronjob を使用するか、サーバー側の呼び出しだけを使用して、キュー内のいずれかのレコードにlast_update短い時間 (たとえば 30 秒) よりも古いレコードがあるかどうかを確認します。ページで。これにより、攻撃者がキューをいっぱいにしようとすることも防止できます。

同じ cronjob で、自分の番のユーザーにデータがstart_time入力されているかどうかを確認します。30 秒経っても開始されていない場合は、キューから削除します。

ユーザーが Javascript を無効にしている場合でも、それを検出し、代わりにページ全体のメタ リフレッシュを使用できます。

于 2012-11-13T09:21:09.207 に答える