Laradock - Запуск очередей Redis с Supervisor, выдающим ошибку - Вызов неопределенной функции Moontoast \ Math \ bcadd () - PullRequest
0 голосов
/ 14 октября 2019

Я управляю проектом Laravel на Laradock. У меня есть класс Job, который обрабатывает класс Notification, который отправляет почту. Работа использует Redis для драйвера очереди, и все хорошо настроено

У меня есть Supervisor, все настроено и работает. Ниже приведен мой .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

. Он настроен в каталоге php-worker>supervisord.d Ларадока. У меня также есть Laravel Horizon, настроенный для мониторинга моих очередей Redis. Когда задание выполняется, Supervisor запускает задание, и это подтверждается в моем файле 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

Глядя на возможные решения для указанного выше исключения, я вижу предположения о том, что причиной является отсутствие Bcmath модуль для PHP, но я выполнил следующую команду и подтвердил, что у меня есть этот модуль:

dpkg --list | grep -i bcmath

Показывает, что у меня есть модуль Bcmath для моей версии PHP (7.3). Поэтому не знаю, почему я получаю упомянутое исключение, которое препятствует выполнению моей очереди.

1 Ответ

0 голосов
/ 17 октября 2019

Проблема заключалась в том, что модуль Bcmath в файле .env Ларадока в секции PHP_WORKER не установлен на true . Сначала модуль должен быть установлен в вашем рабочем пространстве, затем включите его в ОБА разделах PHP_FPM И PHP_WORKER . Моя ошибка заключалась в том, что я установил значение true только в разделе PHP_FPM , поэтому пришлось сделать то же самое в разделе PHP_WORKER section

...