laravel项目中的控制面板cron作业错误

时间:2019-08-17 15:30:46

标签: laravel cron command cpanel

我有一个laravel项目,我创建了一个命令来做某事。我的目标是每分钟运行一次命令,因此我将命令添加到计划中。如果在本地服务器上运行

  

php artisan的时间表:运行   可以,但是只有一次。

所以我上载我的服务器项目并在CPanel中创建Cron作业,但出现错误

  

PHP致命错误:找不到类'Illuminate \ Console \ Command'

Cron作业中的命令

  

/ usr / bin / php /path-to-project/app/Console/Commands/Notification.php

我不明白为什么我可以在本地服务器上运行命令,但不能在在线服务器上运行。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

内核是什么样的?它至少应该看起来像这样:

protected function schedule(Schedule $schedule) {
$schedule->command('artisanCommandNameHere')->everyMinute(); 
}

就个人而言,我还要在末尾添加->withoutOverlapping(),以防止同时执行。

这些文档应为您提供帮助:https://laravel.com/docs/5.8/scheduling

更新: 我只是再次看了一下,就意识到所提供的信息是正确的,这个问题与我所想的不同。首先,为什么不让Laravel调度程序处理cron作业?该命令的全部目的是消除手工制作cron工作的不必要的复杂性。使用上面的块作为调度功能,仅在服务器上运行php artisan schedule:run时,作业将按照指定的顺序重复。

但是,如果您沉迷于自己创建cron作业,那么您将丢失命令中的工匠部分。您需要在php和文件名之间添加它,如下所示:

usr/bin/php /path-to-project/artisan /path-to-project/app/Console/Commands/Notification.php

Artisan是其自己的基于Symfony的CLI,Laravel中的命令旨在通过它运行,而不是作为基本的php文件运行。

相关问题