溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP5中thinkphp-queue怎么用

發布時間:2021-01-16 11:30:19 來源:億速云 閱讀:490 作者:小新 欄目:編程語言

這篇文章主要介紹ThinkPHP5中thinkphp-queue怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1、安裝 thinkphp-queue

推薦使用Composer進行安裝,切換到項目的根目錄,執行: composer require topthink/think-queue

2、配置消息隊列的存儲環境

配置文件位于 application\extra\queue.php,如圖:ThinkPHP5中thinkphp-queue怎么用

使用Redis驅動,如果Redis環境還沒有安裝,請自行安裝哦,很簡單的,或者也可以使用其他類型驅動,如圖:ThinkPHP5中thinkphp-queue怎么用

3、任務的創建

我們在index模塊下,Index.php文件,建立一個名為 queue 的方法(一定要這樣么?當然不是,本教程,只是例子,你可以新建模塊,方法名也可以是其他),如圖:

ThinkPHP5中thinkphp-queue怎么用

ThinkPHP5中thinkphp-queue怎么用

4、任務消息的消費以及刪除處理

我們在 index模塊下創建一個 job 文件,該文件用來處理消費模式,如圖:ThinkPHP5中thinkphp-queue怎么用

在 Demo 這個類下,創建一個 fire 方法,該方法是消息隊列默認調用的方法。如圖:

ThinkPHP5中thinkphp-queue怎么用

以上就是完成任務的創建--》推送--》消費了。
在瀏覽器或者終端,執行一下我們 index/queue.html 方法,就完成創建以及推送了,關于任務消費,可以參考一下命令,在終端切換到項目的根目錄:

5、監聽任務并執行

php think queue:listen
php think queue:work –daemon(不加–daemon為執行單個任務)

兩種,具體的可選參數可以輸入命令加 –help 查看

可配合supervisor使用,保證進程常駐

1.1 命令模式
  • 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
2.2 命令行參數
  • 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怎么用

以上是“ThinkPHP5中thinkphp-queue怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女