在cPanel

时间:2017-06-30 20:10:27

标签: laravel cron cpanel schedule artisan

我有以下功能:

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

4 个答案:

答案 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)

这对我有用

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

enter image description here