Laravel CPanel Cron Job命令未运行

在Apache / CPanel共享服务器上为Laravel应用程序实现Cron Job时遇到问题。我有一个任务命令,无论何时从命令行运行它,它都能正常工作;每天调用时,它也能正常运行,但它没有按“一天一次”的时间表运行。

仅当Laravel命令也被称为everyMinute()时,Cron Job波纹管才能在每分钟调用时完美工作,如下所示:

定时致电

php -d register_argc_argv=On /home/path/domain.com/artisan schedule:run > /dev/null 2>&1

服务器时间表* * * * *

Laravel命令:

$schedule->command('alert:dailly')->everyMinute();

问题是我真正想工作的命令每天一次,并且不起作用。曾经每分钟工作正常的同一条命令,只是每天一次不被调用,如下所示:

定时致电

php -d register_argc_argv=On /home/path/domain.com/artisan schedule:run > /dev/null 2>&1

服务器时间表0 0 * * *

Laravel命令:

$schedule->command('alert:dailly')->cron('0 0 * * * *');

$schedule->command('alert:dailly')->daily();

有什么问题吗?

谢谢!

urboat19 回答:Laravel CPanel Cron Job命令未运行

您无需在日常通话中更改服务器时间表。

您的服务器上应该有一个工匠cron,如下所示:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

此cron将每1分钟被调用一次,当它启动时,Laravel将评估您计划的任务。

稍后,您的代码将每天使用:

$schedule->command('cmd-name:op')->daily();

每天都会在午夜运行任务。

有关其他计划频率,请检查docs

,

我有一个类似的问题,却没有找到真正的原因。我通过在特定时间和后台强制执行每日程序来解决此问题。这样您的代码将是(假设您想在凌晨1:30运行它):

$schedule->command('alert:dailly')->dailyAt('01:30')->runInBackground();

我还注意到,我不得不每半刻钟运行一次命令。所以(小时):00,(小时):15,(小时):30和(小时):45算出来,(小时):03例如不是。

这可能是托管问题(在我的情况下为A2hosting.com,已共享),但是知识库并没有使我变得更明智。值得尝试。一次将其用完即可使用Linux命令top -ac监视该进程,以便查看该命令是否实际执行。

如果这对您有用,请不要问我为什么。我必须通过反复试验为自己找到这种解决方案。

我想指出,如in this PHP 'bug' report所述,您的cron调用永远不会到达register_argc_argv=On参数。尝试不带任何参数地运行它。

php /home/path/domain.com/artisan schedule:run > /dev/null 2>&1

除非您的托管服务有不同建议。

本文链接:https://www.f2er.com/3135089.html

大家都在问