Очередь Laravel: работа продолжается вечно

У меня странная проблема с очередью Laravel: работа. В моем crontab я настраиваю работу, как описано в Laravel Docs

* * * * * nginx php /path/to/site/artisan schedule:run >> /dev/null 2>&1

И в моем приложении / Console / Kernel.php я настраиваю это:

$schedule->command('queue:work')->cron('* * * * *');

На моем производственном сервере очередь php artisan: работа выполняется в течение нескольких секунд и "убивается". Вот чего я ожидал.

В моем окне разработчика очередь php artisan: работа выполняется вечно. Таким образом, активация задания cron порождает процессы php до тех пор, пока не будет заполнена вся память.

Оба бокса - CentOS 7.4, производственная версия работает на PHP 7.1, а разработчик - на PHP 7.2.

Как сказано в комментарии ниже, я не думаю, что проблема в команде cron.

Запущенная форма ssh:

php artisan queue:work

на dev работает вечно на производстве несколько секунд.


person Patrick Heppler    schedule 10.05.2018    source источник
comment
Возможный дубликат В чем разница между queue: work --daemon и очередь: слушайте   -  person parker_codes    schedule 10.05.2018


Ответы (1)


Вы можете попробовать запустить его один раз, это запустит одно задание, а затем завершит процесс.

php artisan queue:work --once=1

Или в вашем PHP-коде с использованием фасада Artisan:

Artisan::call('queue:work', [
                    '--once' => 1, // Do NOT run it as a daemon (not a continuous function)
                    '--tries' => 1,
                    '--queue' => 'yourqueue',
                    '--timeout' => 0
                ]);
person Flame    schedule 08.04.2019