MySQLテーブルからの情報に依存するGUIを作成しています。私ができるようにしたいのは、テーブルが新しいデータで更新されるたびにメッセージを表示することです。私はこれをどのように行うのか、あるいはそれが可能であるとしてもわかりません。最新のMySQLアップデートを取得するコードがありますが、新しいデータがテーブルに入るたびにメッセージを受け取る方法がわかりません。ありがとう!
2 に答える
非常に単純で簡単な解決策は、テーブルから最新の自動インクリメント ID をポーリングし、それを以前のポーリングで見たものと比較することです。大きい場合 -- 新しいデータがあります。これは「アクティブ ポーリング」と呼ばれます。実装は簡単で、あまり頻繁に行わなければ十分です。したがって、最後の id 値を GUI のどこかに保存する必要があります。また、この保存された値は、GUI アプリケーションを再起動するとリセットされることに注意してください。GUI の開始時に何をすべきかを必ず考えてください。おそらく、GUI の実行中に発生する挿入のみを追跡する必要があります。その場合、GUI の起動時に、現在の id 値をポーリングして保存し、定期的にポーリングしてその変更に対応するだけで済みます。
@spacediver は、アクティブ ポーリングのアプローチについて良いアドバイスを提供しています。他のオプションも投稿したいと思います。
クライアント間で通知をやり取りするために、ある種のメッセージパッシングを使用できます。ZeroMQ、twisted などは、これらの機能を提供します。これを行う 1 つの方法は、更新中のクライアントにメッセージを発行させ、データベースの挿入を成功させることです。クライアントは、データベースを常にポーリングする代わりに、すべてのチャネルで通知をリッスンできます。
挿入を行うクライアントへの更新メッセージの追加を制御できない場合は、このリンクを参照して、データベース トリガーを使用してスクリプトを呼び出し、更新メッセージをメッセージング フレームワークに単に発行することもできます。UDF 拡張機能をインストールして、トリガーで sys_exec コマンドを実行し、単純なスクリプトを呼び出せるようにする方法について説明します。
この方法では、クライアントはすべて定期的にチェックするのではなく、単に通知に応答します。