我已将调度程序配置为每分钟运行一次以执行两个命令:
$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');
它在过去一个月的开发中运行良好。然而,在设置我们的服务器以使用 Envoyer 运行之后,调度程序突然在第一次之后不再执行。
换句话说,如果在 Forge 中将计划设置为每分钟,它会运行一次,然后永远不会附加日志。
我添加了 Envoyer 心跳以每 10 分钟对其进行一次跟踪,但它不会触发thenPing()
通知 Envoyer 的方法……即使在第一次运行之后也是如此。
我可以删除 cron 条目并重新创建它,强制它运行一次。
如果给它们自己的 cronjob,所有这些都运行良好。
当我检查任何/storage/framework/schedule-*
锁定文件时,我发现没有任何可删除的内容可能会阻止它们。
Laravel 日志文件中没有任何内容显示问题。
有任何想法吗?