定期的に実行される cron タスクがあります。このタスクは、その処理を完了するために有効である条件に依存します。重要な場合、この条件はデータベース内の特定のレコードに対する単なる SELECT です。条件が満たされない場合 (つまり、SELECT が予期した結果セットを返さない場合)、スクリプトはただちに終了します。
条件がすぐに有効になるため、これは悪いことです (いつになるかはわかりませんが、別のスクリプトの実行により有効になります)。
ですから、どうにかしてスクリプトをより堅牢にしたいと考えています。私は2つの解決策を考えました:
while
ループを入れてsleep
、条件が有効になるまで継続します。これは機能するはずですが、スクリプトがループに入ると制御不能になるという欠点があります。そのため、特定のファイルが存在するかどうかを確認するために目を覚ました後に追加する必要があります。もしそうなら、それはユーザーがそれを「強制」したいことを「理解」します。- スクリプトは、条件がまだ有効ではないことを確認すると、crontab にスクリプトを追加して停止します。その数秒のスクリプトは継続的に条件をポーリングし、条件が有効な場合は最初のスクリプトを再起動してその処理を再開します。この解決策は機能しているように見えますが、それが良い解決策であるかどうかはわかりません。たとえば、プログラムで crontab を変更するのは悪い考えでしょうか?
とにかく、おそらくこの問題は一般的であり、私が思いついた2つよりもはるかに優れた標準的な解決策があると思いました. 誰かがより良い提案を持っていますか? 私の考えからどれが一番いいでしょうか?私はcronタスクの経験があまりないので、私が監督できること/問題がある可能性があります.