ホームページ >バックエンド開発 >PHPチュートリアル >時間管理に関するよくある質問をする
時間制御に関する一般的な質問をします
ビジネス 発言の先制に関する質問について、5 秒以内に先制して発言するユーザーが 1,000 人いて、5 秒後に発言できるのは 1 人だけであると仮定します。
お客様からセッションが使用できないとのリクエストがありました
これが私が対応した方法です
データベース内にスピーチテーブル tableWords を作成します。最初のユーザーが最初に発言したい場合は、レコードを追加します。その後、他のユーザーが競合します。テーブルにレコードがある場合、発言することはできません。
これは問題ないようですが、同時実行の状況を考慮すると、1,000 人のうち複数人が発言する可能性が高くなります。ユーザーが同じミリ秒以内に挿入操作を実行しました。1 人のユーザーのみに挿入を許可するにはどうすればよいですか?
-----解決策---------------------------- -
あなたの懸念 それは冗長です
これら 1,000 人のユーザー全員が同じマイクロ秒内にリクエストを送信したとしても、最初の瞬間に応答されるのは 1 人のユーザーのリクエストだけで、他のユーザーはキューに入れられるだけです。
------解決策------------------
トランザクション、ファイル ロック、セマフォ ロックなどは、ユーザーの発言資格を決定するために使用されます。
データベースの一意のインデックスに依存することもでき、フィールドはトピック ID によって決定できます。仕様を待ちます。つまり、これは明らかにあなたのニーズを満たしているはずです。