Редактирование обновило 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
Вещи были изменены , но это не было упомянуто в документе
--daemon Run the worker in daemon mode (Deprecated)
теперь значением по умолчанию php artisan queue:work
, выполнения в режиме демона,
так queue:work
продолжают обрабатывать задания, никогда не перезагружая платформу
для выполненного это однажды , команда,
php artisan queue:work --once
Наиболее важное различие - то, что queue:work --daemon
не перезапускает платформу на каждом , задание , но queue:listen
делает . На самом деле, listen
запускает совершенно новый процесс Laravel для каждого задания.
Попытка себя: Откройте 2 терминала и работайте work --daemon
в один и listen
в другом. work
окно выполнит задания намного быстрее, чем listen
.
С Laravel 5.7 новая опция --stop-when-empty
была добавлена к эти queue:work
команда. При использовании этой опции будет обработана текущая очередь, пока это не будет пусто, затем команда выйдет.
Согласно документация :
- stop-when-empty опция может использоваться, чтобы дать рабочему команду обрабатывать все задания и затем выходить корректно. Эта опция может быть полезной при работе очередей Laravel в контейнере Докера, если Вы хотите завершить работу контейнера после того, как очередь пуста:
php artisan queue:work --stop-when-empty