您好,登錄后才能下訂單哦!
這篇文章主要介紹ThinkPHP5中thinkphp-queue怎么用,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
1、安裝 thinkphp-queue
推薦使用Composer進行安裝,切換到項目的根目錄,執(zhí)行: composer require topthink/think-queue
2、配置消息隊列的存儲環(huán)境
配置文件位于 application\extra\queue.php,如圖:
使用Redis驅(qū)動,如果Redis環(huán)境還沒有安裝,請自行安裝哦,很簡單的,或者也可以使用其他類型驅(qū)動,如圖:
3、任務(wù)的創(chuàng)建
我們在index模塊下,Index.php文件,建立一個名為 queue 的方法(一定要這樣么?當(dāng)然不是,本教程,只是例子,你可以新建模塊,方法名也可以是其他),如圖:
4、任務(wù)消息的消費以及刪除處理
我們在 index模塊下創(chuàng)建一個 job 文件,該文件用來處理消費模式,如圖:
在 Demo 這個類下,創(chuàng)建一個 fire 方法,該方法是消息隊列默認(rèn)調(diào)用的方法。如圖:
以上就是完成任務(wù)的創(chuàng)建--》推送--》消費了。
在瀏覽器或者終端,執(zhí)行一下我們 index/queue.html 方法,就完成創(chuàng)建以及推送了,關(guān)于任務(wù)消費,可以參考一下命令,在終端切換到項目的根目錄:
5、監(jiān)聽任務(wù)并執(zhí)行
php think queue:listen php think queue:work –daemon(不加–daemon為執(zhí)行單個任務(wù))
兩種,具體的可選參數(shù)可以輸入命令加 –help 查看
可配合supervisor使用,保證進程常駐
queue:subscribe 命令 [截至2017-02-15,作者暫未實現(xiàn)該模式,略過]
queue:work 命令
work 命令: 該命令將啟動一個 work 進程來處理消息隊列。
php think queue:work --queue helloJobQueue
queue:listen 命令
listen 命令: 該命令將會創(chuàng)建一個 listen 父進程 ,然后由父進程通過 proc_open(‘php think queue:work’)
的方式來創(chuàng)建一個work 子 進程來處理消息隊列,且限制該work進程的執(zhí)行時間。
php think queue:listen --queue helloJobQueue
Work 模式
php think queue:work \ --daemon //是否循環(huán)執(zhí)行,如果不加該參數(shù),則該命令處理完下一個消息就退出 --queue helloJobQueue //要處理的隊列的名稱 --delay 0 \ //如果本次任務(wù)執(zhí)行拋出異常且任務(wù)未被刪除時,設(shè)置其下次執(zhí)行前延遲多少秒,默認(rèn)為0 --force \ //系統(tǒng)處于維護狀態(tài)時是否仍然處理任務(wù),并未找到相關(guān)說明 --memory 128 \ //該進程允許使用的內(nèi)存上限,以 M 為單位 --sleep 3 \ //如果隊列中無任務(wù),則sleep多少秒后重新檢查(work+daemon模式)或者退出(listen或非daemon模式) --tries 2 //如果任務(wù)已經(jīng)超過嘗試次數(shù)上限,則觸發(fā)‘任務(wù)嘗試次數(shù)超限’事件,默認(rèn)為0
Listen 模式
php think queue:listen \ --queue helloJobQueue \ //監(jiān)聽的隊列的名稱 --delay 0 \ //如果本次任務(wù)執(zhí)行拋出異常且任務(wù)未被刪除時,設(shè)置其下次執(zhí)行前延遲多少秒,默認(rèn)為0 --memory 128 \ //該進程允許使用的內(nèi)存上限,以 M 為單位 --sleep 3 \ //如果隊列中無任務(wù),則多長時間后重新檢查,daemon模式下有效 --tries 0 \ //如果任務(wù)已經(jīng)超過重發(fā)次數(shù)上限,則進入失敗處理邏輯,默認(rèn)為0 --timeout 60 //創(chuàng)建的work子進程的允許執(zhí)行的最長時間,以秒為單位
可以看到 listen 模式下,不包含 --deamon
參數(shù),原因下面會說明
Linux啟動守護進程,以tp5為例子
nohup php think queue:work --daemon --queue 任務(wù)名稱 & nohup php think queue:work --daemon --queue 任務(wù)名稱 &
在Linux查看任務(wù)數(shù)量,可以在終端輸入:jobs -l
以上是“ThinkPHP5中thinkphp-queue怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。