最近遇到乙個批量傳送簡訊的需求,簡訊介面是第三方提供的。剛開始想到,獲取到手機號之後,迴圈呼叫介面傳送不就可以了嗎?
但很快發現問題:當簡訊數量很大時,不僅耗時,而且成功率很低。
於是想到,用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訊息佇列實現及應用
目前對訊息佇列並不了解其原理,本篇文章主要是通過慕課網學習歸納的一些筆記,為後續學習打下基礎。眾所周知在對 設計的時候,會遇到給使用者 簡訊 訂單系統有大量的日誌 秒殺設計 等,伺服器沒法處理這種瞬間迸發的壓力,這種情況要保證系統正常有效的使用,就需要 訊息佇列 的幫助。本篇主要通過訊息佇列的思路進...