ユーザーが Web カメラを制御して左右に回転できるサイトを構築しています。すべてのユーザーは 1 分間のアクションを取得します。サイトには、ユーザーが 1 人ずつカメラを制御できるようにするキューイング システムが用意される予定です。私の質問は次のとおりです。このキューイングシステムを構築する方法について誰か提案がありますか? 使用できるチュートリアルやコードはありますか?
どうもありがとう!
ユーザーが Web カメラを制御して左右に回転できるサイトを構築しています。すべてのユーザーは 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 を無効にしている場合でも、それを検出し、代わりにページ全体のメタ リフレッシュを使用できます。