ヘルプ: 複数のユーザーによる同時アクセスに問題がありますか?
アドバイスをお願いします。よろしくお願いします!
状況は次のように説明されます。
システム構造: 1. インターフェイス モジュール (php) -->2. 中間インターフェイス (php) --> 3. データベース (mysql)
1. インターフェイス モジュール: 操作インターフェイスと操作結果を表示します。
2. 中間インターフェイス: インターフェイス モジュールとデータベース間のデータ交換、およびその他の機能を担当します (ヘルプを求める質問には関係しないため説明しません) );
一般的なプロセス: インターフェイス モジュールから http リクエストを送信し、インターフェイス モジュールがデータベースにアクセスしてデータを取得し、それをインターフェイス モジュールに返します。 > ここで問題が発生します:
インターフェイス モジュールには多数のアクセス ユーザーがあり、これらのユーザーは同じリクエストを同時にインターフェイスに送信する可能性があります。たとえば、特定のデータを同時に編集するなどです。
Q: この問題を回避するにはどうすればよいですか?
説明が明確かどうかわかりませんが、アドバイスをお願いします。ありがとうございます。
------解決策----------------------
ロック
ビジネスでは「特定のデータを同時に編集する」ことが許可されており、最後に送信されたものが優先されます
それ以外の場合、リクエストを受信すると、「xxx は編集中です」が返されます
------解決策のアイデア---- ------------------
ユーザー A がニュースを編集して正常に読み取ったら、このデータのステータス フィールドを設定しますタイムスタンプ この時点で誰かが編集したい場合、ステータス 1 は拒否されます
ユーザー A のページの Ajax ポーリングにより、まだ編集中であることをサーバーに伝え、数十秒ごとに時間を更新します。秒
A が編集して送信したとき、またはユーザー B がステータスを 1 に編集したいが、最後に ajax を送信した時刻が現在時刻と違いすぎるため、ステータスを 0 に設定します
------解決策---------- ------------
編集する際に許可は必要ありませんか? A が B に送信する内容も編集できますか?
------解決策のアイデア----------------------
に置くのがより適切です中間層中間層は一般的にAPIと呼ばれるものなので
フィルタ条件を追加するのは比較的簡単です
もちろんインターフェース層でも実装できますが、インターフェイス層はデータ層に直接アクセスすべきではありません(アクセスできません)。
そのため、別のキャッシュ メカニズムを設定する必要があり、リクエストが処理されない場合は中間層に送信する必要はありません
共有メモリ、データベース、またはファイル キューを使用するだけです