Я использую очереди 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
непосредственно из каталога моего проекта, он работает как положено, то есть задания выполняются асинхронно.
Любая помощь в этом отношении очень ценится.