62
задан 13 October 2016 в 00:36

4 ответа

Редактирование обновило 07.04.2017:

существует теперь три способа выполнить Вашу очередь:

  • queue:work - это - новый процесс "демона" (флаг больше не требуется). Платформа разожжет "однажды" - и затем сохранит цикличное выполнение через задания. Это продолжится неограниченно долго. Это использует меньше памяти/CPU, чем queue:listen, потому что платформа не ложится спать все время. Необходимо также не забыть использовать queue:restart, чтобы вынудить очередь обновить любой код, изменяет Вас нажатие во время исправления.

  • queue:work --once - это разожжет платформу, обработает одно задание, затем завершит работу. Полезный для тестирования во время разработки и т.д.

  • queue:listen - это разожжет платформу на каждом цикле, обработает одно задание, затем полностью завершит работу и затем разожжет платформу снова и т.д. и цикл неограниченно долго. Это означает, что вся память освобождена после того, как каждое задание обрабатывается. Если у Вас есть утечки памяти с queue:work - дают этому попытку.

Эти --daemon флаг больше не имеет эффект на эти команды.

Исходный ответ:

существует два перечисленные других вопроса.

существует artisan queue:work, и artisan queue:listen

  • queue:work просто появится от следующего задания в очереди и обработает только что одно задание. Это - 'одно от' команды, которая возвратится к командной строке, после того как одна команда очереди обрабатывается.
  • queue:listen будет слушать очередь и продолжать обрабатывать любую очередь, управляет, чтобы она получила. Это продолжит работать неограниченно долго, пока Вы не остановите его.

В Laravel> =4.2 был --daemon добавленная команда. Путем это работает, просто продолжает управлять очередями непосредственно, вместо того, чтобы перезагрузить всю платформу после того, как каждая очередь обрабатывается. Это - дополнительная команда, которая значительно уменьшает память и требования CPU Вашей очереди.

важный момент с эти --daemon команда состоит в том, что при обновлении приложения необходимо конкретно перезапустить очередь с [1 113], иначе Вы могли потенциально получить все виды странных ошибок, поскольку у Вашей очереди все еще будет старый код в памяти.

Так для ответа на вопрос" , Какую команду я должен использовать для выполнения моих демонов? " - ответ почти всегда queue:work --daemon

116
ответ дан 31 October 2019 в 13:41

Вещи были изменены , но это не было упомянуто в документе

 --daemon  Run the worker in daemon mode (Deprecated)

теперь значением по умолчанию php artisan queue:work, выполнения в режиме демона,

так queue:work продолжают обрабатывать задания, никогда не перезагружая платформу

для выполненного это однажды , команда,

php artisan queue:work --once

16
ответ дан 31 October 2019 в 13:41

Наиболее важное различие - то, что queue:work --daemon не перезапускает платформу на каждом , задание , но queue:listen делает . На самом деле, listen запускает совершенно новый процесс Laravel для каждого задания.

Попытка себя: Откройте 2 терминала и работайте work --daemon в один и listen в другом. work окно выполнит задания намного быстрее, чем listen.

5
ответ дан 31 October 2019 в 13:41

С Laravel 5.7 новая опция --stop-when-empty была добавлена к эти queue:work команда. При использовании этой опции будет обработана текущая очередь, пока это не будет пусто, затем команда выйдет.

Согласно документация :

- stop-when-empty опция может использоваться, чтобы дать рабочему команду обрабатывать все задания и затем выходить корректно. Эта опция может быть полезной при работе очередей Laravel в контейнере Докера, если Вы хотите завершить работу контейнера после того, как очередь пуста:

php artisan queue:work --stop-when-empty
0
ответ дан 31 October 2019 в 13:41

Другие вопросы по тегам:

Похожие вопросы: