2

ユーザーがバグ モニターを作成できるようにする Perl の Web アプリを考えています。したがって、本質的に、各「バグ ウォッチ」は、「スリープ」時間とともにサブルーチンに渡されるバグ ID になり、「スリープ時間」が終了すると、親プロセスまたはピア プロセスをブロックすることなく繰り返される必要があります。

  • Schedule::Cronを試しました。cron のような形式をサポートしていますが、ここではサブルーチンへの引数は単純なスカラーでなければならないため、除外しました。

  • POE/Coro は別のオプションのようですが、私はそれについてあまり考えていません/ :(

洞察はありますか?ティア

-マット。

4

4 に答える 4

6

Schedule::Cron の何が問題になっていますか? 任意のサブルーチン参照を作成できるため、必要な余分なデータまたは特定のデータを参照するクロージャを作成できます。引数リストに頼る必要はありません。モジュールについて他にうまくいかないことはありましたか?

于 2008-11-24T10:13:17.787 に答える
4

Schedule::Cron を試してみました。cron のような形式をサポートしていますが、ここではサブルーチンへの引数は単純なスカラーでなければならないため、除外しました。

Schedule::Cron のドキュメントによると、引数、サブルーチンを呼び出すときに使用される引数を含む配列への参照です。必要に応じて、引数の名前付き配列への参照を渡します。cron エントリは @data への参照を保持するため、必要に応じてコード内の @data 要素を追加または削除できます。

$cron->add_entry(
    '* * * * *',
    subroutine => \&mysub,
    arguments => \@data,
);

ブライアンが提案したように、クロージャーを使用することもできます。

my $var = 42;
my @arr = get_stuff();

$cron->add_entry(
    '* * * * *',
    sub { mysub($var, @arr) },
);

クロージャーの詳細については、perlrefのman ページを参照してください。

于 2008-11-24T15:39:58.830 に答える
1

Coroを調べることにした場合は、Coro を中心に構築された Web ライブラリ/フレームワーク であるため、 Continuityを検討する価値があるかもしれません。

デフォルトで Continuity の上に「スクワット」するSquatting Web マイクロフレームワーク もご覧ください。Squatting ディストリビューションには、 Coro::Eventの使用例がいくつか含まれています。

于 2008-11-24T12:17:42.310 に答える
0

@(brian d foy): Schedule::Cron が私にとって良いと思う理由 1: $cron->add_entry は、@arrays/$vars をサブルーチンに渡すオプションを提供していないようです。

$cron->add_entry("$temp",{'subroutine' => \&test1,'arguments' => \@array}); 許可されていません。

2: cron->run(detach=>1); の後に新しい cron エントリを追加する方法があるかどうかわかりません。スクリプトを再起動せずに起動されました..

于 2008-11-24T11:05:07.247 に答える