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
我在 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