午前 8 時から午後 8 時までの間、スクリプトを 30 秒から 1 分の間でランダムに実行したいと考えています。
ループで 30 ~ 60 秒のスリープ状態で PHP スクリプトを 1 回だけ開くのを妨げるものはありますか? そして、時刻が午前 8 時から午後 8 時の間かどうかをチェックします。
Cronジョブと比較して、これを行うことの欠点は何ですか? Cron ジョブはランダムに実行できますか?
間違いなく max_execution_time が停止する可能性があります (ホスティングで無限に設定できない場合)。睡眠時間は考慮されていませんが、しばらくすると制限に達する可能性があります。
欠点は、それらが永久に実行されることです。失敗した場合、すぐに気付かない可能性が高く、ビルドを間違えると、解放せずに多くのメモリと CPU を消費します。cronjobs を使用すると、必要になるたびにクリーンで新しいプロセスが開始されることを確認できます。
追加: cronjob をセットアップするのはとても簡単です。
0,30 8-18 * * * php myscript.php
このような永続的なスキームを php で実装できます。それは機能します(コマンドラインからphpを使用する場合...)。マイナーな欠点かもしれない唯一のことは、障害が発生した場合の回復がないことです。これは、cron ジョブを使用する場合は異なります。新しいプロセスが単純に開始されます。ただし、これは明らかに他のリスクをもたらすため、「より良い」方法はありません。
cron はランダムな時間にプロセスを開始できません。ただし、一定の間隔でプロセスを開始し、ランダムな長さの初期スリープ コマンドを使用できます。それは同じ効果があるはずです。