如何在前台觸發後台異步批量發送短信而不影響用戶體驗?
本文介紹如何實現前台觸發後台異步批量發送短信,且不影響用戶體驗。 用戶點擊按鈕後,前台立即返回成功提示,後台則異步執行數據庫查詢、Redis緩存寫入和短信發送。
核心思路:異步處理
該方案利用異步處理機制,將耗時操作移至後台執行,避免阻塞前台。 具體步驟如下:
-
前台Ajax請求:用戶點擊發送按鈕,前端使用Ajax向後台發送請求,請求參數包含短信模板ID、手機號列表和短信內容。
$.ajax({ url: '/send-sms', type: 'POST', data: { template_id: 123, mobiles: ['13800138000', '13800138001'], content: '測試短信' }, success: function(response) { alert('短信發送請求已提交'); }, error: function(error) { alert('請求失敗:' error.responseText); } });
登入後複製 -
後台接收請求並返迴響應:後台接收Ajax請求後,立即返回成功響應(JSON格式),告知前台請求已接收。 關鍵在於,短信發送邏輯被放入異步任務中。
// 後台控制器方法public function sendSmsAction() { $templateId = $_POST['template_id']; $mobiles = $_POST['mobiles']; $content = $_POST['content']; // 立即返回成功響應echo json_encode(['success' => true, 'message' => '請求已接收,短信發送任務已啟動']); // 將任務添加到隊列(例如使用Redis或RabbitMQ) $this->addTaskToQueue($templateId, $mobiles, $content); }
登入後複製 -
異步任務處理:
addTaskToQueue
方法將短信發送任務添加到消息隊列中。 一個獨立的後台進程(例如使用隊列工作者)持續監聽隊列,取出任務並執行。// 添加任務到隊列(示例使用Redis) private function addTaskToQueue($templateId, $mobiles, $content) { $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->lPush('sms_queue', json_encode(['template_id' => $templateId, 'mobiles' => $mobiles, 'content' => $content])); }
登入後複製 -
隊列工作者:隊列工作者從
sms_queue
隊列中獲取任務,執行短信發送,並處理錯誤日誌。// 隊列工作者(示例) while (true) { $task = $redis->rPop('sms_queue'); if ($task) { $data = json_decode($task, true); $result = $this->sendSms($data['template_id'], $data['mobiles'], $data['content']); if ($result !== true) { // 記錄錯誤日誌error_log("短信發送失敗: " . $result); } } sleep(1); // 避免CPU佔用過高}
登入後複製 短信發送函數(
sendSms
) : 該函數調用短信服務商API發送短信。
通過以上步驟,前台用戶體驗不受影響,後台則高效地處理批量短信發送。 選擇合適的隊列系統(Redis、RabbitMQ、Beanstalkd等)至關重要,它能保證任務可靠地被處理,並支持分佈式環境。 此外,完善的錯誤處理和日誌記錄機制也必不可少。
以上是如何在前台觸發後台異步批量發送短信而不影響用戶體驗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

從 Redis 官方源下載源碼包編譯安裝,保證最新穩定版本,可個性化定制。具體步驟如下:更新軟件包列表創建 Redis 目錄下載 Redis 源碼包解壓源碼包編譯安裝配置並修改 Redis 配置啟動 Redis檢查啟動狀態

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

在CentOS上配置Hadoop分佈式文件系統(HDFS)時,需要修改以下關鍵配置文件:core-site.xml:fs.defaultFS:指定HDFS的默認文件系統地址,例如hdfs://localhost:9000。 hadoop.tmp.dir:指定Hadoop臨時文件的存儲目錄。 hadoop.proxyuser.root.hosts和hadoop.proxyuser.ro

CentOS系統下HDFS文件系統的安裝、配置及優化指南本文將指導您如何在CentOS系統上安裝、配置和優化Hadoop分佈式文件系統(HDFS)。 HDFS安裝與配置Java環境安裝:首先,確保已安裝合適的Java環境。編輯/etc/profile文件,添加以下內容,並將/usr/lib/java-1.8.0/jdk1.8.0_144替換為您的實際Java安裝路徑:exportJAVA_HOME=/usr/lib/java-1.8.0/jdk1.8.0_144exportPATH=$J

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

Laravel 8 針對性能優化提供了以下選項:緩存配置:使用 Redis 緩存驅動、緩存門面、緩存視圖和頁面片段。數據庫優化:建立索引、使用查詢範圍、使用 Eloquent 關係。 JavaScript 和 CSS 優化:使用版本控制、合併和縮小資產、使用 CDN。代碼優化:使用 Composer 安裝包、使用 Laravel 助手函數、遵循 PSR 標準。監控和分析:使用 Laravel Scout、使用 Telescope、監控應用程序指標。
