Почему Laravel или Beanstalkd пропускают работу?

Я управляю аудио преобразованиями с Laravel Queues а также beanstalkd, контролируется supervisord.

Когда пользователь загружает аудиофайл, он переходит к AudioController.php что вызывает Queue::push('AudioProcess'), что само по себе вызывает exec('sh some_script.sh some_audio.mp3') обработать звук и установить статус модели аудио приложения в 1 когда это будет сделано.

Я сделал кучу загрузок для тестирования, вот записи
Аудио загрузки записей

1 означает AudioProcess.php работник был казнен и 0 означает AudioProcess.php работник не был казнен.

Я предполагаю, что это может быть либо из управления Laravel Queues, либо из beanstalkd, но я не могу найти ничего релевантного в журналах (laravel.logмой руководитель queue.log, php_errors.log).

Я использую промежуточную и производственную среду на одном сервере, поэтому есть два приложения Laravel и, следовательно, два php artisan queue:listen команды, запущенные одновременно (каждая с --env указано), если это как-то связано с моей проблемой. Это хорошо сработало несколько недель назад, потом я на некоторое время отказался от проекта и в последнее время восстановил его. Я сделал несколько apt-get update && apt-get upgrade тоже.

Почему Laravel или beanstalkd не обрабатывают все задания?

3

Решение

Проблема, вероятно, происходила потому, что два php artisan queue:listen (для каждой среды) отправляли задания в одну и ту же очередь beanstalkd (default). Это привело к некоторому конфликту, но я не могу сказать больше …

Я исправил это, сделав каждую среду php artisan queue:listen отправить работу на [environment] очередь. Поэтому у меня сейчас две очереди, staging а также production,

Как это сделать

  • Создать app/config/[environment]/queue.php который перезаписывает
    [connections => [beanstalkd => [queue]]] параметр из default
    к названию этой среды.

  • Укажите имя очереди для
    Artisan: php artisan queue:listen --queue=[environment]

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]