首页 文章

在cPanel中设置Laravel cron作业

提问于
浏览
3

我有以下功能:

protected function schedule(Schedule $schedule)
{
    $schedule->command('email:users')->everyMinute();
}

当我运行命令

artisan schedule:run

它会发送一封电子邮件,但当我将以下命令作为cron作业添加到cpanel时,它不会发送任何电子邮件 . Cpanel假设在运行cron作业时向我发送通知,但我没有收到一封电子邮件 .

php / home / rain / artisan schedule:run 1 >> / dev / null 2>&1

我哪里做错了?

此外,当我运行命令 artisan schedule:run 时,它只运行一次 . 我很好奇为什么我不得不添加 ->everyMinute(); 如果它不会每分钟运行?如果我想每周发送一次,我可以设置cron作业 . 如果cron作业每周发送一次,为什么我必须在函数中添加 ->weekly();

1 回答

  • 2

    Laravel调度程序假设您每分钟都有一个cronjob . 仅当您想要具有多个任务时,调度程序才有用 .

    通常,您在cPanel中配置了一个单独的cronjob,您可以将调度程序设置为 everyWeek() ,并且可以使用另一个任务 everyDay() ,而无需在cPanel中添加更改cronjobs .

    Laravel将自动知道任务是否已经运行 .

    https://laravel.com/docs/5.4/scheduling

    这个Cron每分钟都会调用Laravel命令调度程序 . 执行schedule:run命令时,Laravel将评估您的计划任务并运行到期的任务 .

相关问题