常駐隊列處理器

2018-02-24 15:52 更新

在 queue:work 中也包含了一個 --daemon 選項,強迫隊列處理器持續(xù)處理工作,而不會每次都重新啟動框架,這個作法比起 queue:listen 可有效減少 CPU 使用量,但是卻增加了布署時,對于處理中隊列任務的復雜性。

要啟動一個常駐的隊列處理器,使用 --daemon:

php artisan queue:work connection --daemon

php artisan queue:work connection --daemon --sleep=3

php artisan queue:work connection --daemon --sleep=3 --tries=3

如你所見 queue:work 命令支持 queue:listen 大多相同的選項參數,你也可使用 php artisan help queue:work 命令來觀看全部可用的選項參數。
布署常駐隊列處理器

最簡單布署一個應用程序使用常駐隊列處理器的方式,就是將應用程序在開始布署時轉成維護模式,你可以使用 php artisan down 命令來完成這件事情,當這個應用程序在維護模式,Laravel 將不會允許任何來自隊列上的新工作,但會持續(xù)的處理已存在的工作。

要重新啟動 queue 也是非常容易,請將底下命令加到部署命令:

php artisan queue:restart

上述命令會在執(zhí)行完目前的工作后,重新啟動隊列。

注意: 這個命令依賴緩存系統(tǒng)來排定重新啟動任務。默認 APCu 無法在命令提示字符中工作。如果你正在使用 APCu 請將 apc.enable_cli=1 加到你的 APCu 設置當中。

撰寫常駐隊列處理器

常駐隊列處理器不會在處理每一個工作之前都重新啟動框架。因此,你應該注意并小心地在工作處理完成之前釋放占用的資源。例如,如果你正在使用 GD 函式庫操作圖片,當你完成工作的時候,你應該使用 imagedestroy 方法來釋放占用的內存。

同樣地,數據庫連接可能在長時間執(zhí)行的隊列處理器中斷線,你可以使用 DB::reconnect 方法來確保你每次都有一個全新的連接。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號