tp5.0 queue 队列操作
生活随笔
收集整理的這篇文章主要介紹了
tp5.0 queue 队列操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
檢查是否安裝redis(沒有請自行百度安裝):
phpinfo:
配置thinkphp-queue,沒有請執(zhí)行 composer require topthink/think-queue 加入:
創(chuàng)建 隊列 文件:
use think\Queue;class TestQueue {// 測試public function queue(){// 推遲 n 秒執(zhí)行 $queue = '指定隊列名'Queue::later('2', 'app\message\job\Work','aa@qq.com','');// 執(zhí)行 Work 的 send 方法//Queue::push('app\message\job\Work@send','aa@qq.com');// 默認執(zhí)行 Work 的 fire 方法//Queue::push('app\message\job\Work','aa@qq.com'); echo '加入隊列成功';} }
隊列 邏輯處理 文件:
namespace app\message\job;use think\queue\Job;class Work {// 默認執(zhí)行的方法public function fire(Job $job, $data){$isJobDone = $this->send($data);if ($isJobDone) {//成功刪除任務(wù)$job->delete();} else {//任務(wù)輪詢4次后刪除if ($job->attempts() > 3) {// 第1種處理方式:重新發(fā)布任務(wù),該任務(wù)延遲10秒后再執(zhí)行//$job->release(10);// 第2種處理方式:原任務(wù)的基礎(chǔ)上1分鐘執(zhí)行一次并增加嘗試次數(shù)//$job->failed();// 第3種處理方式:刪除任務(wù)$job->delete();}}}/*** 根據(jù)消息中的數(shù)據(jù)進行實際的業(yè)務(wù)處理* @param array|mixed $data 發(fā)布任務(wù)時自定義的數(shù)據(jù)* @return boolean 任務(wù)執(zhí)行的結(jié)果*/private function send($data){// 開始執(zhí)行隊列的邏輯echo 'int ....';echo PHP_EOL;echo 'data: ' .$data;echo PHP_EOL;// ...return true;} }
?
后臺監(jiān)聽即可:
php think queue:listen
php think queue:listen --queue 'queuename' // 監(jiān)聽指定隊列
?
訪問 127.0.0.1/message/testqueue? (路由自行配置)
控制臺查看
?
參考文檔:https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.md
守護進程(supervisor):https://blog.csdn.net/qq_34856247/article/details/86741533
轉(zhuǎn)載于:https://www.cnblogs.com/xdtx/p/9540904.html
總結(jié)
以上是生活随笔為你收集整理的tp5.0 queue 队列操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检查肠镜多少钱啊?
- 下一篇: HPU组队赛B:问题(二进制枚举)