Laravel CPanel Cron Job 命令没有 运行

Laravel CPanel Cron Job command doesn't run

我在 Apache/CPanel 共享服务器上为我的 Laravel 应用程序实施 Cron 作业时遇到问题。我有一个任务命令,只要我从命令行 运行 它就可以正常工作,每天调用时也可以正常工作,但它不是 "Once a day" 计划中的 运行ning。

仅当 Laravel 命令也被调用 everyMinute() 时,每分钟调用 Cron Job 才能完美运行,如下所示:

Cron 调用

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

服务器时间表* * * * *

Laravel 命令:

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

问题是我真正想要执行的命令是每天一次,但它不起作用。同样的命令每分钟都可以正常工作,但一天一次就不会调用,如下所示:

Cron 调用

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

有什么问题吗?

谢谢!

我遇到了类似的问题,但一直没有找到真正的原因。我通过在特定时间和后台强制执行每日执行来解决它。你的代码将是(假设你想在早上 1:30 运行 它):

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

我还注意到,我必须每刻钟 运行 命令一次。所以 (hour):00, (hour):15, (hour):30 和 (hour):45 算出来了,例如 (hour):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

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

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

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

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

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

稍后在您的代码中使用每日:

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

每日将在每天午夜运行任务。

对于其他计划频率,请检查 docs