Laravel 调度程序在不同时间触发 2 个命令
Laravel Scheduler fire 2 Commands at different times
我有 1 个自定义 Command
我创建了:
php artisan protal:process {name}
我需要为 2 个不同的 Portal(不同 name
)触发此命令,所以如果我 运行 在我的控制台中执行此命令一切正常:
php artisan protal:process nameone
//wait for it to finish
php artisan protal:process nametwo
我需要在晚上用 cron 做同样的事情,所以这就是我想出的:
app/console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('portal:process nameone')->daily()->withoutOverlapping();
$schedule->command('portal:process nametwo')->dailyAt('00:10')->withoutOverlapping();
}
由于某些原因,只有第一个命令会触发,而第二个命令会被忽略。如果我 运行 第二个评论第一个它工作正常。
也许要在不同的时间触发 2 个命令,我是否必须采用上述方法以外的其他方法?
添加为参考答案,是评论:
我以前遇到过这个问题。问题是我从未正确关闭第一个命令(例如使用 return),这导致 Laravel 认为该命令从未结束并且因此从未启动下一个命令。 PHP 逐行执行,所以问题可能出在 withoutOverlapping
.
我有 1 个自定义 Command
我创建了:
php artisan protal:process {name}
我需要为 2 个不同的 Portal(不同 name
)触发此命令,所以如果我 运行 在我的控制台中执行此命令一切正常:
php artisan protal:process nameone
//wait for it to finish
php artisan protal:process nametwo
我需要在晚上用 cron 做同样的事情,所以这就是我想出的:
app/console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('portal:process nameone')->daily()->withoutOverlapping();
$schedule->command('portal:process nametwo')->dailyAt('00:10')->withoutOverlapping();
}
由于某些原因,只有第一个命令会触发,而第二个命令会被忽略。如果我 运行 第二个评论第一个它工作正常。
也许要在不同的时间触发 2 个命令,我是否必须采用上述方法以外的其他方法?
添加为参考答案,是评论:
我以前遇到过这个问题。问题是我从未正确关闭第一个命令(例如使用 return),这导致 Laravel 认为该命令从未结束并且因此从未启动下一个命令。 PHP 逐行执行,所以问题可能出在 withoutOverlapping
.