PHP和MySQL實現訊息佇列

2021-09-08 19:04:11 字數 866 閱讀 5179

最近遇到乙個批量傳送簡訊的需求,簡訊介面是第三方提供的。剛開始想到,獲取到手機號之後,迴圈呼叫介面傳送不就可以了嗎?

但很快發現問題:當簡訊數量很大時,不僅耗時,而且成功率很低。

於是想到,用php和mysql實現乙個訊息佇列,一條一條的傳送簡訊。下面介紹具體的實現方法:

首先,建立乙個資料表sms,包含以下字段:

id,

phone, //手機號

content //簡訊內容

將需要傳送的簡訊和手機號存入sms表中。

接下來,需要用php實現乙個定時器,定時讀取一條記錄,並傳送簡訊:

<?php

$db = new db();

$sms = new sms();

while(true)

$res = $sms->send($item['phone'],$item['content']); //傳送簡訊

if($res)else

sleep(10); //每隔十秒迴圈一次            

}echo '傳送完畢!';

?>

將**儲存為timer_sms.php,開啟命令列,執行定時器:

php timer_sms.php
好了,php定時器將會根據設定的時間間隔(這裡設的是10秒),自動完成傳送簡訊的任務。任務完成後將自動退出定時器,不再占用伺服器資源。

根據我的測試,php定時器占用資源並不多,不會對伺服器造成壓力。而且是非同步訪問資料庫,也不會影響資料庫的執行。

這種方式的優點是:

1、後台執行,前台無需等待

2、成功率高,失敗的記錄會自動重發,直到成功

php 實現訊息佇列

在做傳送郵件系統時,因為傳送大量郵件很費時間,提出方案是採用佇列的方式 php中可以用memcache memecached來實現訊息佇列。php memcache 訊息佇列類 class qmc return mc mc 計數器,增加計數並返回新的計數 param string key 計數器 p...

PHP訊息佇列實現及應用

目前對訊息佇列並不了解其原理,本篇文章主要是通過慕課網學習歸納的一些筆記,為後續學習打下基礎。眾所周知在對 設計的時候,會遇到給使用者 簡訊 訂單系統有大量的日誌 秒殺設計 等,伺服器沒法處理這種瞬間迸發的壓力,這種情況要保證系統正常有效的使用,就需要 訊息佇列 的幫助。本篇主要通過訊息佇列的思路進...

PHP訊息佇列實現及應用

目前對訊息佇列並不了解其原理,本篇文章主要是通過慕課網學習歸納的一些筆記,為後續學習打下基礎。眾所周知在對 設計的時候,會遇到給使用者 簡訊 訂單系統有大量的日誌 秒殺設計 等,伺服器沒法處理這種瞬間迸發的壓力,這種情況要保證系統正常有效的使用,就需要 訊息佇列 的幫助。本篇主要通過訊息佇列的思路進...