我有以下功能:
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 回答
Laravel调度程序假设您每分钟都有一个cronjob . 仅当您想要具有多个任务时,调度程序才有用 .
通常,您在cPanel中配置了一个单独的cronjob,您可以将调度程序设置为
everyWeek()
,并且可以使用另一个任务everyDay()
,而无需在cPanel中添加更改cronjobs .Laravel将自动知道任务是否已经运行 .
https://laravel.com/docs/5.4/scheduling