我有以下功能:
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();
?
它对我有用:
首先尝试您的命令,无需等待:
/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
Laravel 调度程序假设您每分钟都有一个 cronjob。调度程序仅在您想要执行多个任务时才有用。
通常,您在 cPanel 中配置了一个 cronjob,您可以将调度程序设置为
everyWeek()
,并执行另一项任务 everyDay()
,而无需在 cPanel 中添加或更改 cronjobs。
Laravel 会自动知道任务是否已经运行。
https://laravel.com/docs/5.4/scheduling
这个 Cron 每分钟都会调用 Laravel 命令调度程序。什么时候 执行schedule:run命令时,Laravel将评估你的 计划任务并运行到期的任务。
这对我有用
/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 /home/hosting-username/laravel-folder/artisan && command:my_command >> /dev/null