3

1秒ごとに実行されるcronジョブがあり、通常は数秒で実行されますが、場合によっては数分間実行されます。

次の分が来たときにコマンドがすでに実行されている場合、コマンドを実行しないようにcronが必要です。

行は次のようになります*/1 * * * * cmd

私はこれで試しました*** * * ID = job1 FREQ = 1m AFTER = job1 cmd

しかし、成功しませんでした。

cronで解決することは可能ですか、それともロックを実装する必要がありますか?

4

2 に答える 2

5

inProgress(またはその他)と呼ばれる一時ファイルを作成して標準の場所に保存し、これを使用して、実行する必要があるかどうかにかかわらず、次のジョブと通信できます。

ジョブのフローが次のようになった場合はどうなりますか?

  1. 標準のinProgressファイルを確認します
  2. 存在する場合は終了します
  3. それ以外の場合は、inProgressファイルを作成します
  4. 仕事する
  5. inProgressファイルを削除します。
于 2010-09-06T15:53:50.560 に答える
2

ロックはこれを実現する 1 つの方法です。または、まさにこの問題を解決するために私が作成した The Fat Controller と呼ばれる Cron に似たプログラムを使用することもできます。

x 分ごとに実行するのではなく、スクリプトの 1 つのインスタンスが終了してから別のインスタンスが開始するまでの間隔を設定できます。

さらに進んで、終了コードを使用して、Fat Controller に待機しないように指示し、スクリプトをすぐに再実行することもできます。たとえば、限られた数のアイテムを処理するスクリプトが、終了時にまだ実行すべき処理がまだ残っていることを認識している場合です。これは、バッチ処理を処理する優れた方法です。

Web サイトには、さらに多くの使用例と例があります。

http://www.4pmp.com/fatcontroller/

于 2011-05-20T10:49:24.317 に答える