W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 queue:work 中也包含了一個(gè) --daemon 選項(xiàng),強(qiáng)迫隊(duì)列處理器持續(xù)處理工作,而不會(huì)每次都重新啟動(dòng)框架,這個(gè)作法比起 queue:listen 可有效減少 CPU 使用量,但是卻增加了布署時(shí),對(duì)于處理中隊(duì)列任務(wù)的復(fù)雜性。
要啟動(dòng)一個(gè)常駐的隊(duì)列處理器,使用 --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 大多相同的選項(xiàng)參數(shù),你也可使用 php artisan help queue:work 命令來觀看全部可用的選項(xiàng)參數(shù)。
布署常駐隊(duì)列處理器
最簡(jiǎn)單布署一個(gè)應(yīng)用程序使用常駐隊(duì)列處理器的方式,就是將應(yīng)用程序在開始布署時(shí)轉(zhuǎn)成維護(hù)模式,你可以使用 php artisan down 命令來完成這件事情,當(dāng)這個(gè)應(yīng)用程序在維護(hù)模式,Laravel 將不會(huì)允許任何來自隊(duì)列上的新工作,但會(huì)持續(xù)的處理已存在的工作。
要重新啟動(dòng) queue 也是非常容易,請(qǐng)將底下命令加到部署命令:
php artisan queue:restart
上述命令會(huì)在執(zhí)行完目前的工作后,重新啟動(dòng)隊(duì)列。
注意: 這個(gè)命令依賴緩存系統(tǒng)來排定重新啟動(dòng)任務(wù)。默認(rèn) APCu 無法在命令提示字符中工作。如果你正在使用 APCu 請(qǐng)將 apc.enable_cli=1 加到你的 APCu 設(shè)置當(dāng)中。
常駐隊(duì)列處理器不會(huì)在處理每一個(gè)工作之前都重新啟動(dòng)框架。因此,你應(yīng)該注意并小心地在工作處理完成之前釋放占用的資源。例如,如果你正在使用 GD 函式庫操作圖片,當(dāng)你完成工作的時(shí)候,你應(yīng)該使用 imagedestroy 方法來釋放占用的內(nèi)存。
同樣地,數(shù)據(jù)庫連接可能在長(zhǎng)時(shí)間執(zhí)行的隊(duì)列處理器中斷線,你可以使用 DB::reconnect 方法來確保你每次都有一個(gè)全新的連接。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: