5.3
) 有三種方式進行隊列消費queue:work
- 這是一個新的後臺進程(再也不須要 daemon
標記), 這種方式運行,框架只會啓動一次,並保持循環去消費隊列,除非出現異常不然該進程將無限時間運行下去。這種方式消耗的 cpu
和 內存
都比 queue:listen
要少,由於在整個生命週期中框架一直是在保持運行狀態。同時,使用該方法時若是更新了代碼,記得使用 queue:restart
來重啓。php
queue:work --once
- 該方法會啓動框架,運行 job,而後銷燬掉。在開發和測試代碼的時候使用比較合適,由於每次都會加載一遍代碼嘛。框架
queue:listen
- 這種方式運行,框架每次都會啓動,運行job,而後關閉,而後再次啓動框架,運行job,而後關閉,這樣一直循環(每次運行完一次都會徹底釋放掉運行時的內存和進程)。因此這種方式你不用擔憂代碼的熱更新,不用去重啓 queue
,隨之而來的另一個好處是不用去擔憂 queue:work
帶來的內存泄漏。測試
注意 從
5.3
版本開始--daemon
這個參數已經再也不起做用了,能夠看Illuminate\Queue\Console\WorkCommand.php
rest
protected $signature = 'queue:work {connection? : The name of connection} {--queue= : The queue to listen on} {--daemon : Run the worker in daemon mode (Deprecated)} {--once : Only process the next job on the queue} {--delay=0 : Amount of time to delay failed jobs} {--force : Force the worker to run even in maintenance mode} {--memory=128 : The memory limit in megabytes} {--sleep=3 : Number of seconds to sleep when no job is available} {--timeout=60 : The number of seconds a child process can run} {--tries=0 : Number of times to attempt a job before logging it failed}';