php中文網最新課程
每日17點準時技術干貨分享
thinkphp redis用法,
最近小編收到群里面的小伙伴在使用ThinkPHP5.0的框架時,不知道如何使用php-queue(實在尷尬,網上很多這方面的教程)。哈哈,不想參考也沒關系,小編就具體地走一遍吧~~關于什么是隊列?隊列的解決什么?隊列有哪些場景?...等等這些問題,開發者請自行先去了解,還有本案例只針對ThinkPHP框架進行具體操作哦。1、安裝 thinkphp-queue推薦使用Composer進行安裝,切換到項目的根目錄,執行:?composer require topthink/think-queue2、配置消息隊列的存儲環境配置文件位于 application\extra\queue.php,如圖:使用Redis驅動,如果Redis環境還沒有安裝,請自行安裝哦,很簡單的,或者也可以使用其他類型驅動,如圖:3、任務的創建我們在index模塊下,Index.php文件,建立一個名為 queue 的方法(一定要這樣么?當然不是,本教程,只是例子,你可以新建模塊,方法名也可以是其他),如圖:4、任務消息的消費以及刪除處理我們在 index模塊下創建一個 job 文件,該文件用來處理消費模式,如圖:在 Demo 這個類下,創建一個 fire 方法,該方法是消息隊列默認調用的方法。如圖:以上就是完成任務的創建--》推送--》消費了。php?think?queue:listenphp?think?queue:work?–daemon(不加–daemon為執行單個任務)
兩種,具體的可選參數可以輸入命令加 –help 查看
可配合supervisor使用,保證進程常駐
redis有序隊列。queue:subscribe 命令?[截至2017-02-15,作者暫未實現該模式,略過]
queue:work 命令
work 命令:該命令將啟動一個 work 進程來處理消息隊列。
php think queue:work --queue helloJobQueue
redis是什么?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
redis定長隊列,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
▼
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态