Laradock - 运行 Redis 队列与 Supervisor 抛出错误 - 调用未定义的函数 Moontoast\Math\bcadd()
Laradock - Running Redis queues with Supervisor throwing the error - Call to undefined function Moontoast\Math\bcadd()
我正在 运行在 Laradock 上创建一个 Laravel 项目。我有一个作业 class 可以处理发送邮件的通知 class。作业使用 Redis 作为队列驱动程序,一切都已设置好
我已经设置好 Supervisor 并开始工作了。下面是我的 .conf
文件,在作业 运行s:
时由 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 模块,但我已经 运行 以下命令并确认我有这个模块:
dpkg --list | grep -i bcmath
显示我的 PHP 版本 (7.3) 有 Bcmath 模块。所以不知道为什么我会收到提到的异常,这会阻止我的队列被执行。
问题归结为 [=28 下 Laradock 的 .env 文件中没有 Bcmath 模块=] 部分设置为 true。首先,模块必须安装在您的工作区中,然后在 PHP_FPM 和 PHP_WORKER 部分下打开它.我的错误是我只在 PHP_FPM 部分下设置了 true 所以必须在 PHP_WORKER 部分下做同样的事情
我正在 运行在 Laradock 上创建一个 Laravel 项目。我有一个作业 class 可以处理发送邮件的通知 class。作业使用 Redis 作为队列驱动程序,一切都已设置好
我已经设置好 Supervisor 并开始工作了。下面是我的 .conf
文件,在作业 运行s:
[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 模块,但我已经 运行 以下命令并确认我有这个模块:
dpkg --list | grep -i bcmath
显示我的 PHP 版本 (7.3) 有 Bcmath 模块。所以不知道为什么我会收到提到的异常,这会阻止我的队列被执行。
问题归结为 [=28 下 Laradock 的 .env 文件中没有 Bcmath 模块=] 部分设置为 true。首先,模块必须安装在您的工作区中,然后在 PHP_FPM 和 PHP_WORKER 部分下打开它.我的错误是我只在 PHP_FPM 部分下设置了 true 所以必须在 PHP_WORKER 部分下做同样的事情