Ответ 1
Изменить обновленный 2017-04-07:
Теперь есть три способа запуска вашей очереди:
-
queue:work
- это новый процесс "демон" (флаг больше не требуется). Рамка будет запускаться "один раз", а затем продолжит цикл через задания. Это будет продолжаться бесконечно. Он использует меньше памяти/процессора, чем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
. То, как он работает, просто просто запускает очереди напрямую, а не перезагружает всю структуру после обработки каждой очереди. Это необязательная команда, которая значительно снижает требования к памяти и процессору вашей очереди.
Важным моментом с командой --daemon
является то, что при обновлении приложения вам необходимо специально перезапустить свою очередь с помощью queue:restart
, иначе вы могли бы получить всевозможные странные ошибки, так как ваша очередь все равно будет иметь старую кода в памяти.
Итак, чтобы ответить на ваш вопрос "Какую команду я должен использовать для запуска моих демонов?" - ответ почти всегда queue:work --daemon