TP6基於redis的消息隊列實現,從0開始,一步一步,包會教程!


我是用的PHP框架是thinkphp6,所以使用的相對來說比較匹配的think-queue.盡量把每一步都寫出來,經過自己采坑,盡量做到按照步驟下來,基本都能跑通!

官方地址:https://github.com/top-think/think-queue

第一步:安裝composer(如果這一步都不會,那么就不用看下去了)

 

第二步:在項目根目錄下,安裝要用的依賴,執行:composer require topthink/think-queue

 

第三步:本地安裝redis服務端。我這里用的是集成工具,自帶redis服務,如果沒有的話,就去redis的官網:https://redis.io/,下載安裝一下,按照教程,啟動redis服務,應該也不難的,我試過。

 

第四步:使用phpinfo查看你的PHP是否已經安裝redis的擴展,如果沒有,那么請注意了,你需要安裝redis擴展。具體操作如下:

·使用phpinfo查看你的系統版本以及PHP支持的擴展版本:

 

要注意幾個地方 X64,TS,VC,以及你的PHP版本,然后去https://windows.php.net/downloads/pecl/releases/redis/ 這個地址找到對應的redis版本,下載,解壓。

或者這個地址:http://pecl.php.net/package/redis

·找到php_redis.dll文件,把它放到你的PHP安裝目錄的ext文件夾下

·編輯php.ini,加入extension=php_redis;這里注意,PHP版本不同有時候寫法不一樣,也有可能是extension=php_redis.dll,這個你根據php.ini中查看類似寫法就好。

·再用phpinfo看一下,發現有redis擴展了,說明裝好了。

 

第五步:編寫app\queue.php文件,這個文件是自動生成的。

 

 按照這樣設置就行,redis的連接根據你自己的實際情況來。

 

第六步:在app下新建文件夾job,然后新建一個php文件,這里就是放怎么去處理消息隊列的邏輯,比如新建Job1.php文件

 

 第七步:在任何地方可以將一個數據推入消息隊列:think\facade\Queue::push($job, $data = '', $queue = null)

第八步:在命令行執行:php think queue:listen --queue=<隊列名>來監聽消息隊列,一旦隊列里面有數據,就會啟動消費進程去消費。這里要注意一點,如果你的邏輯處理起來耗時很長,超過了默認的60秒,那么是會報錯的。如果你想要不報錯,可以這樣起命令:php think queue:listen --queue=<隊列名> --timeout=600 (任務執行一次之后還是會一直執行的,可以在代碼開頭加一段這個

if ($job->attempts() == 1) {
            //這樣任務只會執行一次
            $job->delete();
        }

 第九步:如果你想以守護進程的形式常駐這個隊列的監聽,那么使用supervisor這個我沒試過,試過的小伙伴也可以在評論區補充下怎么使用,大家互相學習!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM