使用laravel Scheduler在共享主机上执行Cron作业不起作用

时间:2018-12-06 23:58:23

标签: php laravel cron hosting shared

我遇到了运行laravel Scheduler在队列中发送邮件的问题

设置如下:Laravel 5.7 我已经配置了如下所述的调度程序(App / Console / Kernel.php)

protected function schedule(Schedule $schedule)
{       
  $schedule->command('queue:work --tries=3')->everyFiveMinutes()->withoutOverlapping();
}

数据库是根据laravel文档设置的。在用户界面中单击链接后,就可以在数据库中看到该条目。

.env QUEUE_CONNECTION =数据库和Config / queue.php中的相同设置 (如果我将数据库更改为同步,则效果很好)

我在服务器中的cron作业如下(我只是尝试登录cron)

/usr/local/bin/php /home/XXX/YYY/artisan schedule:run 1>> /home/XXX/public_html/junk/cron_log.php 2>&1

我可以看到cron日志每五分钟更新一次,但

“没有计划的命令可以运行”

昨晚(睡觉前)的代码和设置完全相同。我已经测试了超过 40个emais发送尝试,并且数据库条目被删除。我只尝试用everyFiveMinues()保存调度程序,但现在不起作用。

我可以理解邮件到达缓慢的状态,但是为什么没有像昨晚那样删除数据库条目?

1 个答案:

答案 0 :(得分:0)

这对于使用Laravel 5.7(共享托管Godaddy)的其他人可能有用。

上述调度电子邮件作业的问题未执行(我的意思是cron作业正在运行,但数据库条目未清除。问题似乎与

有关
->withoutOverlapping();

删除此方法后,现在可以正确看到cron_log条目,并且还收到了邮件。我的cron_log条目如下所示

Running scheduled command: '/opt/alt/php71/usr/bin/php' 'artisan' queue:work --tries=3 > '/dev/null' 2>&1

我猜想不带Overlapping()的方法在cron执行中有问题。我没有更改代码中的任何内容。