2 つのコマンドを実行するために、1 分ごとに 1 回実行するようにスケジューラを構成しました。
$schedule->command('amazon:read-sqs')
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/amazon_read_sqs.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh1');
$schedule->command('jobs:dispatcher', ['--max' => 100])
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/jobs_dispatcher.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh2');
過去 1 か月の開発期間中、順調に稼働しています。しかし、Envoyer で実行するようにサーバーをセットアップした直後に、スケジューラーが突然、最初の 1 回目以降実行されなくなりました。
つまり、Forge でスケジュールが 1 分ごとに設定されている場合、スケジュールは 1 回実行され、ログが追加されることはありません。
thenPing()
10分ごとに追跡するためにEnvoyerのハートビートを追加しましたが、 Envoyerに通知するメソッドをトリガーしません...最初の実行後でも。
cron エントリを削除して再作成し、強制的に 1 回だけ実行することができます。
独自の cronjob が与えられている場合、これらはすべて正常に実行されます。
ロック ファイルをチェックすると、/storage/framework/schedule-*
それらをブロックしている可能性のある削除するファイルが見つかりません。
問題を示す Laravel ログ ファイルには何もありません。
何か案は?