4

POEモジュールを使用してPerlでこれを行うWheel/POCO / Optionはありますか:変更されたレコードについてDBテーブルを監視し(/ insert / updateを削除)、それらの変更に応じて対応したいと思います。

はいの場合、これを示すコードまたはリンクを提供できますか?

4

2 に答える 2

7

私が知っているわけではありませんが、あなたが本当に勤勉であれば、それを書くことができます. その方法は2つ考えられます。

まず最初に、MySQL binlog などのトランザクション ログ/レプリケーション フィードにアクセスします。そのフォーマットにPOE::Filterを記述し、 POE::Wheel::FollowTailを使用して、DB に影響を与えるステートメントごとに 1 つずつイベントのストリームを取得します。次に、データをフィルタリングして、関心のあるものを見つけることができます。

あまり良い考えではありません: EasyDBIを使用してテーブルに対して定期的な選択を実行し、何が変更されたかを確認します。データが小さい場合は機能する可能性があります (ただし、それでもタイミングの問題が発生しやすくなります)。データが大きい場合、これは悲惨な失敗になります。

于 2009-12-17T21:41:06.740 に答える
5

PostgreSQLを使用している場合は、テーブルの変更に対してNOTIFYと呼ばれるトリガーを作成し、クライアントアプリで接続を開いて、同じ通知に対してLISTENを実行できます。次に、POEにDBD ::Pgpg_socketファイル記述子のファイルイベントをリッスンさせることができます。

または、別のファイルまたはネットワークイベントをトリガーするSQLトリガーを作成し(パイプまたはソケットという名前のファイルに書き込む)、POEにそれをリッスンさせることもできます。

于 2009-12-18T02:16:53.760 に答える