目前版本 ( version >= 5.3
) 有三種方式進行佇列消費
queue:work
- 這是一個新的後臺程式(不再需要daemon
標記), 這種方式執行,框架只會啟動一次,並保持迴圈去消費佇列,除非出現異常否則該程式將無限時間執行下去。這種方式消耗的cpu
和記憶體
都比queue:listen
要少,因為在整個生命週期中框架一直是在保持執行狀態。同時,使用該方法時如果更新了程式碼,記得使用queue:restart
來重啟。queue:work --once
- 該方法會啟動框架,執行 job,然後銷燬掉。在開發和測試程式碼的時候使用比較合適,因為每次都會載入一遍程式碼嘛。queue:listen
- 這種方式執行,框架每次都會啟動,執行job,然後關閉,然後再次啟動框架,執行job,然後關閉,這樣一直迴圈(每次執行完一次都會完全釋放掉執行時的記憶體和程式)。所以這種方式你不用擔心程式碼的熱更新,不用去重啟queue
,隨之而來的另外一個好處是不用去擔心queue:work
帶來的記憶體洩漏。注意 從
5.3
版本開始--daemon
這個引數已經不再起作用了,可以看Illuminate\Queue\Console\WorkCommand.php
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}';
本作品採用《CC 協議》,轉載必須註明作者和本文連結