Проблема асинхронной очереди Laravel 5.8 с использованием супервизора - PullRequest
2 голосов
/ 11 июня 2019

Я использую очереди Laravel в своем приложении, у меня следующая конфигурация,

.env

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=database
SESSION_DRIVER=file

конфиг / queue.config

'default' => env('QUEUE_CONNECTION', 'sync'),


'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ]
]

У меня есть настройка supervisor, и он имеет следующую конфигурацию

/ и т.д. / руководитель / conf.d / laravel_queue.sh

[program:laravel_queue]
process_name=%(program_name)s_%(process_num)02d
command=php /usr/local/bin/run_queue.sh
startsecs = 0
autostart=true
autorestart=true
user=root
redirect_stderr=true
stderr_logfile=/var/log/laraqueue.err.log
stdout_logfile=/var/log/laraqueue.out.log

/ USR / местные / бен / run_queue.sh

php /var/www/myproject/artisan queue:work --tries=1

Проблема:

Когда я установил QUEUE_CONNECTION=sync, он работает нормально, но задания выполняются синхронно. Я хочу, чтобы они выполнялись асинхронно. Поэтому, когда я устанавливаю QUEUE_CONNECTION=database, мои задания вообще не выполняются, и я вижу их сидящими в моем jobs столе.

Я также заметил, что когда я запускаю php artisan queue:work непосредственно из каталога моего проекта, он работает как положено, то есть задания выполняются асинхронно.

Любая помощь в этом отношении очень ценится.

...