我正在Laradock上运行Laravel项目。我有一个Job类,用于处理发送邮件的Notification类。 Job使用Redis作为队列驱动程序,并且一切都设置正确
我已经设置并运行了主管。以下是我的.conf
文件,该文件在作业运行时由Supervisor执行:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work redis --sleep=3 --tries=5 --daemon
autostart=true
autorestart=true
numprocs=8
user=root
redirect_stderr=true
stdout_logfile=/var/www/worker.log
这是在Laradock的php-worker>supervisord.d
目录中设置的。我还设置了Laravel Horizon来监视我的Redis队列。执行作业后,主管将运行该作业,并在我的worker.log
文件中对此进行确认,该文件记录了上述.conf
文件中所定义的作业处理,如下所示:
[2019-10-14 12:18:27][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:30][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:31][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:33][21] Processing: App\Jobs\NewStaffAdded
[2019-10-14 12:18:35][21] Processing: App\Jobs\NewStaffAdded
当我访问Horizon仪表板时,我发现作业失败。单击失败的作业以了解更多详细信息,我得到此异常:
Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function Moontoast\Math\bcadd() in /var/www/vendor/moontoast/math/src/Moontoast/Math/BigNumber.php:506
正在寻找上述异常的可能解决方案,我看到有关导致PHP缺少 Bcmath 模块的建议,但我运行了以下命令并确认我具有此模块: / p>
dpkg --list | grep -i bcmath
显示我的PHP版本(7.3)具有 Bcmath 模块。所以不知道为什么我会遇到提到的异常,这阻止了我的队列被执行。
答案 0 :(得分:0)
问题出在Laradock的 .env 文件中的 PHP_WORKER 部分中的 Bcmath 模块没有设置为 true < / strong>。首先,必须将模块安装在您的工作空间中,然后在 PHP_FPM 和 PHP_WORKER 部分下将其打开。我的错误是我只在 PHP_FPM 部分下设置了true,所以不得不在 PHP_WORKER 部分
下做同样的事情