在 cPanel 中设置 Laravel cron 作业

问题描述 投票:0回答:5

我有以下功能:

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

当我运行命令时

artisan schedule:run 

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

php /home/rain/artisan 日程表:运行 1>> /dev/null 2>&1

我哪里做错了?

此外,当我运行命令

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

laravel cron cpanel schedule laravel-artisan
5个回答
10
投票

它对我有用:

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

/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

8
投票

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

通常,您在 cPanel 中配置了一个 cronjob,您可以将调度程序设置为

everyWeek()
,并执行另一项任务
everyDay()
,而无需在 cPanel 中添加或更改 cronjobs。

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

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

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


5
投票

这对我有用

/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

4
投票

这对我有用

/usr/local/bin/php /home2/maildoll/demo.maildoll.com/artisan 队列:工作 --stop-when-empty >> /dev/null


0
投票

试试这个。我们必须在路径和命令之间放置“&&”。这对我有用

/usr/local/bin/php /home/hosting-username/laravel-folder/artisan &&  command:my_command >> /dev/null
© www.soinside.com 2019 - 2024. All rights reserved.