Я управляю проектом 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). Поэтому не знаю, почему я получаю упомянутое исключение, которое препятствует выполнению моей очереди.