0

同時に定期的にレコードを取得している複数のクライアントが接続されている場合、MySQL テーブルからレコードを取得する最良の方法は何でしょうか。

そのため、新しいレコードがテーブルに入ると全員が新しいメッセージを取得しますが、古いメッセージは再度取得されません。

現在のテーブル構造: MessageId、Message、DatePosted、MessageFromID

ありがとう

4

1 に答える 1

1

問題は次のように解釈できます。各クライアントは、どのレコードを読み取るか、どのレコードを読み取らないかをどのように知ることができますか。

それには2つの完全に異なるアプローチがあり、非常に異なる特性があります。

  1. クライアントにそれを気にかけてもらいましょう
  2. サーバーに任せてください

モデル#1は、非常に単純に、

  • AUTO_INCREMENTMessageIDの増分が保証されていない場合は、onsomeフィールドのようなものを使用してください
  • サーバー上で、各クライアントにメッセージだけでなくIDも提供します
  • クライアントにこのIDを保持させ、次のポーリングのフィルターとして使用してもらいます

モデル#2はあなたがする必要があります

  • 'ClientIDとMessageID'を持つ別のテーブルがあります
  • クライアントがメッセージを受け取るたびに、そこにレコードを作成します
  • ポーリングフィルターとして存在しないレコードを使用する
于 2012-05-14T09:12:56.510 に答える