Laravel消費隊列的正確使用姿式

目前版本 ( version >= 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.phprest

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}';
相關文章
相關標籤/搜索