問題タブ [poe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl POE - タイマーを適切に生成する方法
perlでPOEと仲良くしようとしています。非常にゆっくりとその概念を理解し始めていますが、本当に理解するにはほど遠いです:
このコードを使用して、UDP サーバー アプリケーションに接続し、そのステータス メッセージを読み取ります。以下を除いて動作します。
10 秒ごとにキープアライブ パッケージを送信するタイマーを追加しようとしています。
このようなタイマーを適切に設定するにはどうすればよいですか? また、どのように呼び出すのが最適ですか? ReadWriteホイールへの後方参照を台無しにしていると思いますが、ホイール/イベントなどの間のこの接続は、まだ苦労しているものです。これに関するヘルプと洞察は大歓迎です。
perl - POE EasyDBI に対するテストを作成するにはどうすればよいですか?
EasyDBI sessionのデータにアクセスするためにを使用するコードに対してテストを作成するためのアイデアやテクニックを探していますmysql。テストされていることを に認識させたくないので、EasyDBI sessiona またはそのようなものをモックする方法を見つけたいと思ってDSNいました。しかし、どうすればそれができるかは私には明らかではありません。
以前にこの問題を解決した/解決した人はいますか?
database - perl db の投票結果と poe wheel の実行
db テーブルをポーリングし、Poe wheel run を使用して見つかったレコードを処理するアプリを作成しようとしています。これは完全には機能していないようです。そこに提案があります。
データベースのポーリング sql
結果は画面に出力され、po wheel run によって取得されます
ポーホイールラン
db ポーリングは、ホイールが処理できるよりも速く結果を生成します。
デザインの提案はありますか?
perl - POE ベースの IRC ボットに 1 時間ごとにテキストを表示させる
コマンド セットに「モジュール」を使用する POE ベースの IRC ボットがあります。コア ボット スクリプトは、ボットのホーム ディレクトリの plugins ディレクトリに *.pm ファイルを読み込みます。
構成を読み取り、xxx テキストを xxx チャンネルに xxx 分ごとに送信できるモジュールが 1 つ必要です。ただし、モジュールのロードを続行できるように、バックグラウンドで起動する必要があります。
while(1) ループを実行しましたが、ループがアクティブである限り、モジュールは続行できず、コマンドを送信できません。
基本的にサブをバックグラウンドで起動し、そのpidを追跡し、自由に停止できる方法を探しています。
ボットのアーキテクチャは次のとおりです。
bot.pl はメインモジュールである bot.pm を読み込みます。bot.pm は、プラグイン ディレクトリにある *.pm ファイルを読み込みます。プラグインには、1 つ以上のボット コマンドを含めることができます。
multithreading - Perl: ブロッキング呼び出しから受信したメッセージを複数のネットワーク ソケットに転送する方法に関する推奨事項
次のような Perl の問題があります。単純なネットワーク対応のフォワーダー/コンシューマー スクリプトを作成しようとしています。
フォワーダー部分がループし、ローカル ブロッキング関数を呼び出して、新しい文字列を取得します (つまり、既存のライブラリから)。
コンシューマー部分は、複数のクライアントがサーバーに接続できるサーバー (TCP ソケット) で構成されます。
フォワーダー部分によって取得されたすべてのメッセージがクライアントに渡される、つまり、接続されているすべてのクライアント ソケットに転送されるという考え方です。
スレッド/共有変数を調べましたが、この方法ではソケットを共有できません。POE TCP 転送の例 ( http://poe.perl.org/?POE_Cookbook/TCP_Forwarding ) も調べましたが、%clients またはこの特定の例では poe_kernel (方法があるかもしれません...)。
手短に:
- 最初にフォワーダーを開始し、取得関数でループを開始するには、フォークするか、他のスレッドメカニズムを使用する必要があります
- 取得したデータを、接続されているすべてのクライアント/コンシューマーに渡す必要があります。
これが私がやろうとしていることです(注意:抽象コード):
このようなアプリケーションを実装するための優れた効率的な方法についての提案/推奨事項は大歓迎です!
perl - (Perl/POE) POE::Component::IRC では、外部サブルーチンで package_state からデータを取得/取得するにはどうすればよいですか?
POE::Component::IRC をベースとして使用する IRC ボットの package_state から出力データを取得しようとしています。しかし、私はそれをすることができないようです。
基本的に、POE セッション外のサブルーチンでは、サーバーからデータを受信したときに POE によって起動されるイベント サブルーチンからデータを取得したいと考えています。データをグローバル配列や外部ファイルに保存しようとしましたが、データが更新される前に外側のサブルーチンが古いデータを読み取ります。
より具体的には、このボットに誰かが「ison」であるかどうかを確認させ、そうであれば true を返す (または irc_303 からすべてのデータ ( @_ ) を取得する) ようにしています。
このようなもの:
perl - POE::Kernel->run() の停止には約 15 秒かかります。
これは私のコードです。「使用」ステートメントを編集しました。それらはすべて希望どおりに機能しています。
got_responseのDumperは即座に値を出力しますが、その後、 POE::Kernel->runの後の return ステートメントが実行されるまで少なくとも 15 秒待たなければなりません。正しい値を返しますが、それほど長く待つことはできません。サブ get_reponse ダンパーステートメントの後に exit を追加すると、値が返されません。
任意のヘルプと提案をいただければ幸いです。