在 cPanel 中设置 Laravel cron 作业

Setting up a Laravel cron job in cPanel

我有以下功能:

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();

Laravel 调度程序假定您每分钟都有一个 cronjob。调度程序仅在您想要有多个任务时才有用。

通常您在 cPanel 中配置了一个 cronjob,您可以将调度程序设置为 everyWeek() 并执行另一项任务 everyDay(),而无需在 cPanel 中添加或更改 cronjobs。

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

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

This Cron will call the Laravel command scheduler every minute. When the schedule:run command is executed, Laravel will evaluate your scheduled tasks and runs the tasks that are due.

对我有用:

先尝试您的命令,无需等待:

/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

这对我有用

/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

这对我有用

/usr/local/bin/php /home2/maildoll/demo.maildoll.com/artisan queue:work --stop-when-empty >> /dev/null