Jober 工作界面:
產(chǎn)生背景:
項(xiàng)目中經(jīng)常會(huì)有后臺(tái)運(yùn)行任務(wù)的需求瘤礁,比如發(fā)送郵件時(shí)原献,因?yàn)橐B接郵件服務(wù)器输涕,往往需要5-10秒甚至更長(zhǎng)時(shí)間廉邑,如果能先給用戶一個(gè)成功的提示信息哥蔚,然后在后臺(tái)慢慢處理發(fā)送郵件的操作,顯然會(huì)有更好的用戶體驗(yàn)蛛蒙。
當(dāng)然實(shí)際情況遠(yuǎn)不止這一點(diǎn)糙箍,我們可以通過(guò)Jober的配合完成 “訂單超時(shí)關(guān)閉、自動(dòng)評(píng)論宇驾、QQ郵箱定時(shí)發(fā)送功能等等”。
Jober 是什么
通過(guò)Swoole 官方提供Swoole/Process API才得以完成猴伶,Jober 相當(dāng)于每個(gè)子進(jìn)程课舍。如果你開(kāi)啟8個(gè)Jober,那么就是8個(gè)進(jìn)程同時(shí)消費(fèi)他挎。
核心特點(diǎn)
命令行:快速實(shí)現(xiàn)消息中間件消費(fèi)筝尾、支持守護(hù)進(jìn)程、常駐內(nèi)存办桨;
自動(dòng)加載:基于 PSR-4 筹淫,完全使用 Composer 構(gòu)建;
模塊化:支持 Composer 呢撞,可以很方便的使用第三方庫(kù)损姜;
客戶端:支持Beanstalk, 理論上來(lái)說(shuō)還支持RabbitMQ并且可以多進(jìn)程爬蟲(chóng)等等;
-
Jober 特性:
可通過(guò)Queue.php配置,指定隊(duì)列分配不同Jober數(shù)量殊霞;
可通過(guò)配置Crontab, 對(duì)每個(gè)隊(duì)列掃描頻率控制;
分配的每個(gè)Jober,完成5000個(gè)任務(wù)后自動(dòng)退出重啟摧阅;[ 防止內(nèi)存泄漏 ]
用戶停止Jober運(yùn)行,管理者進(jìn)程會(huì)接收到信號(hào);通知Jober執(zhí)行完手頭任務(wù)在退出;
實(shí)際案例,我們想要做這樣一個(gè)功能:
- QQ郵箱定時(shí)發(fā)送郵件的功能
完成步驟如下所示:
jober 安裝
jober 郵件類的封裝
jober 發(fā)送郵件的邏輯寫(xiě)在哪呢绷蹲?
jober 隊(duì)列配置文件
接下來(lái)具體實(shí)現(xiàn)過(guò)程:
-
安裝Jober “composer create-project jober/jober”:
-
安裝 “composer require swiftmailer/swiftmailer”棒卷,自行封裝如圖:
-
郵件發(fā)送邏輯封裝包含日志記錄如圖:
-
模擬投遞兩封定時(shí)郵件:
-
php jober start 啟動(dòng)服務(wù):
-
定時(shí)郵件發(fā)送成功提示:
-
可以發(fā)現(xiàn)已經(jīng)成功:
到此就結(jié)束了:
1, 想要看完整代碼案例顾孽,請(qǐng)點(diǎn)開(kāi) https://github.com/twomiao/Jober Git 地址。
2,小伙伴們比规,記得給我Star喲若厚。Thanks?(?ω?)?
3,你們的支持就是我的動(dòng)力。