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