我正在开发一个项目,需要每小时运行一次 CRON,并在每次运行 CRON 时获取大量最新数据,并且有多个用户。
每个用户的 CRON 需要时间来完成,所以我尝试在后台运行 CRON,这样就不会影响其他 cron。
$users = User::where("connected", 1)->where("role_id", 2)->get();
foreach ($users as $user) {
$schedule->command('fetch:product ' . $user->id)->cron('* */4 * * *');
$schedule->command('fetch:report ' . $user->id)->hourly()->runInBackground();
}
从上面的示例中,第一个 CRON 正在工作,但另一个 CRON 不工作,因为我添加了
->runInBackground()
功能,以便它在后台工作,并且我已启用日志,但登录时仅显示第一个 CRON,而不是第二个 CRON。
代码目前位于 Windows Server 上,稍后将移至 Linux。
我在 Windows 10 和 Laravel 8.2 中遇到同样的问题,任何人都可以找到解决办法吗?
我发现他们应该在 laravel 6.x 上修复了这个问题,但情况似乎并非如此。 https://github.com/laravel/framework/pull/29826