首页 > 解决方案 > 邮件队列的 Laravel 5.4 Cron 作业在 AWS EC2 实例上不起作用

问题描述

我在我的 EC2 实例上创建了一个 cron 作业,用于从队列发送电子邮件。它显示每分钟运行一次玉米命令,但我看到任务保留在我的作业表中。我已经搜索并尝试了现有的解决方案,但未能找出问题所在。虽然当我运行时队列在我的本地服务器上工作 php artisan schedule:run

我在内核中的代码:

$schedule->command('queue:work')
            ->everyMinute()
            ->withoutOverlapping();

我使用 crontab -e 在文件中添加的命令

* * * * * /usr/bin/php /var/www/html/prod_back/artisan schedule:run >> /dev/null 2>&1

这是我运行时在终端中看到的输出sudo service cron status

May 07 13:50:01 ip-172-31-39-27 CRON[20260]: pam_unix(cron:session): session opened for user ubuntu by (uid=0)
May 07 13:50:01 ip-172-31-39-27 CRON[20261]: (ubuntu) CMD (/usr/bin/php /var/www/html/prod_back/artisan schedule:run >> /dev/null 2>&1)
May 07 13:50:01 ip-172-31-39-27 CRON[20260]: pam_unix(cron:session): session closed for user ubuntu

标签: laravel-5amazon-ec2cronqueue

解决方案


最后,我解决了这个问题。我得到了一个社区帮助,指出我的 cron 命令是错误的。我正在运行调度命令而不是队列命令。所以我把它从

* * * * * /usr/bin/php /var/www/html/prod_back/artisan schedule:run >> /dev/null 2>&1

* * * * * /usr/bin/php /var/www/html/prod_back/artisan queue:work >> /dev/null 2>&1

还有一件事,我还必须运行下面的命令来将我的环境更改从同步重新加载到队列驱动程序的数据库。

/usr/bin/php /var/www/html/prod_back/artisan config:cache

请转到下面的此链接并按照检查表诊断您在这方面的具体问题。

https://stackoverflow.com/questions/58738157/laravel-queue-with-aws-elastic-beanstalk

推荐阅读