我遇到了 Laravel 6 任务调度程序的问题,其中计划的命令未按预期运行。
我在两个不同的类中有两个方法,我想使用 Laravel 的任务调度程序自动运行它们。为了实现这一点,我在 app/Commands 文件夹中创建了两个文件,每个文件都包含一个 $signature 变量和一个 handle() 方法。
这是命令文件之一 (AutoCommand.php) 中的 handle() 方法的示例:
public function handle()
{
$autoController = new AutoController();
$autoController->autoMethod();
$this->info('The task is completed');
}
这是我定义时间表的 Kernel.php 文件:
protected function schedule(Schedule $schedule)
{
// This command should run every 3 hours
$schedule->command('first:command')->cron('0 */3 * * *');
// This command should run daily at midnight
$schedule->command('second:command')->daily();
}
当我运行 php artisan Schedule:run 时,我收到以下错误消息:
没有计划的命令准备运行。
Laravel 版本:34 年 6 月 20 日
PHP 版本:7.4.33(cli)
我已尝试根据 Laravel 文档调整计划选项,但问题仍然存在。
将计划更改为每分钟运行一次 (->everyMinute()) 效果很好,但我特别需要一个命令每 3 小时运行一次,另一个命令每天运行一次。
我正在寻求帮助来解决 Laravel 任务调度程序的此问题。
schedule:run
将起作用。为此,您应该在 cron 中创建一条记录。执行crontab -e
并输入类似的代码
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1
然后保存,cron会自动刷新,无需重新加载
我猜它是这样工作的,因为schedule:run将执行时的cron规则与当前时间进行比较,如果匹配,则运行,否则返回
没有计划的命令准备运行
但是由于你手动运行命令,你没有机会完美地进入计时,所以它失败了
PS:如果你不想处理 cron,你也可以尝试运行
php artisan schedule:work