【Fastadmin/ThinkPHP5】使用Queue隊列方法詳細步驟

在現代應用開發中,合理利用隊列系統能夠有效提升系統的性能和響應速度,尤其是在處理耗時較長的任務時,如發送大量郵件、執行定時任務等。下面是如何在ThinkPHP框架中設置和使用隊列功能的詳細指南:

1.配置隊列服務

application/extra/queue.php文件中,我們設置了隊列的連接器及其相關配置:

<?phpuse think\Env;return ['connector' => Env::get('queue.CONNECTOR', 'redis'),//驅動類型,可選擇 sync(默認):同步執行,database:數據庫驅動,redis:Redis驅動,topthink:Topthink驅動//或其他自定義的完整的類名'host' => Env::get('app.REDIS_HOST', '127.0.0.1'),'port' => Env::get('app.REDIS_PORT', '6379'),'password' => Env::get('app.REDIS_PASSWORD', ''),'select' => Env::get('app.REDIS_DB', 1),
];

上述代碼中,我們可以通過環境變量靈活地配置了隊列連接器,支持同步執行、數據庫驅動和Redis驅動等多種方式。

2.創建Job類

我們在application/common/library/job/MessageSendJob.php中創建了一個處理郵件發送任務的Job類:

<?php
namespace app\common\library\job;use app\common\library\Ems;
use think\queue\Job;class MessageSendJob
{/*** 處理郵件發送任務** @param Job $job 當前任務對象* @param array $data 郵件發送所需數據*/public function handle(Job $job, array $data){try {// 實現郵件發送邏輯Ems::sendNotice($data['email'], $data['title'], $data['content']);echo $data['email'] . '郵件發送成功'. PHP_EOL;// 成功發送郵件后刪除隊列任務$job->delete();} catch (\Exception $e) {// 若郵件發送失敗,可根據實際需求決定是否重新入隊if ($job->attempts() < 3) { // 例如最多重試3次$job->release(60); // 在60秒后再次嘗試執行} else {$this->failed($job, $data);}}}/*** 任務執行失敗后的回調** @param Job $job 當前任務對象* @param array $data 郵件發送所需數據*/public function failed(Job $job, array $data){// 記錄日志或采取其他補救措施Log::record('郵件發送任務失敗,郵箱:' . $data['email'], 'error');// 可考慮在此處通知管理員,或采取其他失敗后處理邏輯}
}

3.將任務加入隊列

// 構建郵件發送任務數據
$queueData = ['email' => $email,'title' => $title,'content' => $content,
];// 使用MessageSendJob類將任務推送到'message'隊列
Queue::push(MessageSendJob::class, $queueData, 'message');

4.啟動隊列監聽

? 在命令行環境下,我們可以通過以下命令監聽特定隊列或全局監聽所有隊列:

  • 監聽特定隊列(如'message'):php think queue:listen --queue message
  • 全局監聽所有隊列:php think queue:listen

通過以上步驟,我們成功地在ThinkPHP框架中實現了隊列任務的創建、配置與監聽,使得系統在處理耗時任務時更加高效流暢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713982.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713982.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713982.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tomcat服務部署、優化

一 Tomcat的基本介紹 Tomcat概念 Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器&#xff0c;屬于輕量級應用服務器&#xff0c;在中小型系統和并發訪問用戶不是很多的場合下被普遍使用&#xff0c;是開發和調試 JSP 程序的首選。 當在一臺機器上配置好Apache 服務器…

VMwareWorkstation17.0虛擬機搭建WindowsXP虛擬機(完整安裝步驟詳細圖文教程)

VMwareWorkstation17.0虛擬機搭建WindowsXP虛擬機&#xff08;完整安裝步驟詳細圖文教程&#xff09; 一、Windows XP1.Windows XP簡介2.Windows XP 的下載地址 二、配置 Windows XP 虛擬機運行環境1.新建虛擬機2.選擇類型配置3.插入WinXP光盤映像文件(ISO)4.選擇操作系統5.命名…

Home Assistant:基于Python的智能家居開源系統詳解

Home Assistant&#xff1a;基于Python的智能家居開源系統詳解 在數字化和智能化的時代&#xff0c;智能家居系統成為了現代家庭的新寵。它們能夠讓我們更加方便地控制家中的各種設備&#xff0c;實現自動化和個性化的居住體驗。其中&#xff0c;Home Assistant作為一款基于Pyt…

美易官方:3月1日美股成交額前20

3月1日&#xff0c;美股市場熱鬧非凡&#xff0c;成交額前20的公司股票交易活躍&#xff0c;其中&#xff0c;英偉達&#xff08;NVIDIA&#xff09;的股價收在800美元之上&#xff0c;創下了歷史新高。這一天的股市走勢充分展示了投資者對于科技股的熱烈追捧&#xff0c;同時也…

手機NFC錄入門禁數據,實現手機開門

近場通信&#xff08;Near Field Communication&#xff0c;簡稱NFC&#xff09;&#xff1a; 是一種新興的技術&#xff0c;使用了NFC技術的設備&#xff08;例如移動電話&#xff09;可以在彼此靠近的情況下進行數據交換&#xff0c;是由非接觸式射頻識別&#xff08;RFID&am…

【二分】二分模板+二分題目

一、樸素二分 . - 力扣&#xff08;LeetCode&#xff09;. - 備戰技術面試&#xff1f;力扣提供海量技術面試資源&#xff0c;幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/description/ int left 0, right nums.…

【leetcode】隨機鏈表的復制

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家刷題&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 點擊查看題目 思路: struct Node* copyRandomList(struct Node* head) {struct Node* curhead;//1.copy原鏈…

MWC 2024丨美格智能CEO杜國彬出席中國聯通創新成果發布會并發表主題演講

2月26日&#xff0c;中國聯通在MWC2024 巴塞羅那期間舉辦了以“算網為基&#xff0c;智領未來”為主題的創新成果發布會&#xff0c;集中展示最新的創新成果與最佳實踐。 中國通信標準化協會理事長聞庫、GSMA首席財務官Louise Easterbrook、中國聯通副總經理梁寶俊、華為ICT銷…

每日一“類“:深入理解Qt的心臟《QObject》

Qt框架以其強大的跨平臺能力和豐富的用戶界面元素而廣受開發者歡迎&#xff0c;而QObject類無疑是Qt框架心臟的所在。本文將深入探討QObject&#xff0c;揭示其提供的核心功能以及如何在Qt項目中有效利用這個基類。 核心功能 信號與槽 Qt獨特的信號與槽機制是其事件通信的基…

AWS 認證報名考試流程

AWS認證的考試包括&#xff0c;可以申請線上或者線下考試。 考試類型 線上&#xff1a; 優點&#xff1a;方便快捷無需通勤&#xff0c;隨時約隨時考&#xff0c;基本上每天都可以 缺點&#xff1a;對環境要求較高&#xff0c;屋子里只能有自己&#xff0c;而且不能有其他聲音…

yolov9 瑞芯微芯片rknn部署、地平線芯片Horizon部署、TensorRT部署

特別說明&#xff1a;參考官方開源的yolov9代碼、瑞芯微官方文檔、地平線的官方文檔&#xff0c;如有侵權告知刪&#xff0c;謝謝。 模型和完整仿真測試代碼&#xff0c;放在github上參考鏈接 模型和代碼。 之前寫過yolov8檢測、分割、關鍵點模型的部署的多篇博文&#xff0c;y…

如何安裝VM ware 17 pro 和Ubuntu安裝

下載VM ware軟件 下載地址&#xff1a;Windows VM | Workstation Pro | VMware按步驟安裝&#xff0c;安裝成功后&#xff0c;打開軟件&#xff0c;填寫證書秘鑰 秘鑰&#xff1a;MC60H-DWHD5-H80U9-6V85M-8280D&#xff08;親測有效&#xff09;下載ubuntu 參考博客&#xff1…

軟考中級 軟件設計師備考經驗

考試介紹 軟考中級的軟件設計師需要考兩個部分&#xff0c;選擇題和大題&#xff0c;每科滿分75&#xff0c;需要在同一次考試中兩科同時大于等于45分才算通過。考試的內容包括計算機組成原理、數據結構、數據庫、專業英語、信息安全、計算機網絡等&#xff0c;范圍比較廣但考…

Linux中systemv共享內存

目錄 1.原理 2.接口 1.shmget(share_memory_get獲得共享內存) 2.ftok 3.shmat(share_memory_attaintion掛接到物理內存上) 4.key和shmid的區別 5.ipc 指令 6.shmdt函數&#xff08;share_memory_detach取消掛接&#xff09; 7.shmctl函數&#xff08;share_memory_cont…

C# 數組與集合

C# 數組與集合 Array using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _16._1_Array {internal class Program{static void Main(string[] args){int[] ints1 { 1, 2, 3, 4, 5,6,7,8 };//將…

GenAI助力DevOps,塑造軟件工程的未來

自 2022 年以來&#xff0c;GenAI 無疑已成為一種普遍的技術趨勢。在本文中&#xff0c;我們將探索 DevOps 中令人興奮的 GenAI 領域&#xff0c;討論其潛在優勢、局限性、新興趨勢和最佳實踐&#xff0c;深入了解 AI 支持的 DevOps 前沿世界&#xff0c;并探索這一強大組合如何…

ObjectFactory學習

簡介 在Spring框架中&#xff0c;ObjectFactory是一個功能接口&#xff0c;它定義了一個簡單的方法來獲取對象的實例。ObjectFactory接口通常用于工廠模式和依賴注入中&#xff0c;允許延遲對象創建和配置&#xff0c;以及在運行時動態地決定要返回的對象實例。 源碼 Functi…

Laravel Octane 和 Swoole 協程的使用分析二

又仔細研究了下 Octane 源碼和 Swoole 的文檔&#xff0c;關于前幾天 Laravel Octane 和 Swoole 協程的使用分析中的猜想&#xff0c;得到進一步驗證&#xff1a; Swoole 的 HTTP Server 啟動后會創建一個 master 進程和一個 manager 進程&#xff1b;master 進程又會創建多個…

智能咖啡廳助手:人形機器人 +融合大模型,行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽)

智能咖啡廳助手&#xff1a;人形機器人 融合大模型&#xff0c;行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽) “機器人大模型與具身智能挑戰賽”的參賽作品。的目標是結合前沿的大模型技術和具身智能技術&#xff0c;開發能在模擬的咖啡廳場景中承擔服務員角色并…

常用備注(記錄中...)

文章目錄 docker測試網絡可達性檢查端口是否開放PgSql docker docker logout IP地址:端口號 docker login IP地址:端口號橋接模式bridge啟動容器 docker run -d -p 外部端口號:內部端口號(配置文件中的端口號) --name 容器名稱 -v /data/docker/conf/application.yml:/app/con…