我有以下功能:
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();
?
答案 0 :(得分:2)
Laravel调度程序假设您每分钟都有一个cronjob。只有在您想要执行多个任务时,调度程序才有用。
通常,您在cPanel中配置了一个cronjob,并且可以将调度程序设置为everyWeek()
,并且可以执行另一个everyDay()
任务,而无需在cPanel中添加更改cronjobs。
Laravel将自动知道该任务是否已经运行。
https://laravel.com/docs/5.4/scheduling
这个Cron每分钟都会调用Laravel命令调度程序。什么时候 时间表:执行run命令,Laravel将评估你的 计划任务并运行到期的任务。
答案 1 :(得分:2)
对我有用:
先尝试命令,无需等待:
/usr/local/bin/php /home/hosting-username/laravel-folder/artisan schedule:run
然后,一旦检查是否可行,添加以下内容:
/usr/local/bin/php /home/hosting-username/laravel-folder/artisan schedule:run >> /dev/null 2>&1
答案 2 :(得分:1)
这对我有用
/usr/local/bin/php /home/hosting-username/laravel-folder/artisan schedule:run >> /dev/null
请确保您使用确切版本的 php 来执行计划
例如 如果您的 php v 是 7.3,那么代码将是
/usr/local/bin/ea-php73 /home/hosting-username/laravel-folder/artisan schedule:run >> /dev/null
答案 3 :(得分:0)