當前位置:名人名言大全網 - 短信平臺 - PHP+MYSQL 實現隊列 進行發送短信怎麽做

PHP+MYSQL 實現隊列 進行發送短信怎麽做

最近遇到壹個批量發送短信的需求,短信接口是第三方提供的。剛開始想到,獲取到手機號之後,循環調用接口發送不就可以了嗎?

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

於是想到,用PHP和MySQL實現壹個消息隊列,壹條壹條的發送短信。下面介紹具體的實現方法:

首先,建立壹個數據表sms,包含以下字段:

id,

phone, //手機號

content //短信內容

將需要發送的短信和手機號存入sms表中。

接下來,需要用PHP實現壹個定時器,定時讀取壹條記錄,並發送短信:

<?php

$db = new Db();

$sms = new Sms();

while(true){

$item = $db->getFirstRecord(); //獲取數據表第壹條記錄

if(!$item){

//如果隊列中沒有數據,則結束定時器

break;

}

$res = $sms->send($item['phone'],$item['content']); //發送短信

if($res){

$db->deleteFristRecord(); //刪除發送成功的記錄

echo $item['phone'].'發送成功';

}else{

echo $item['phone'].'發送失敗,稍後繼續嘗試';

}

sleep(10); //每隔十秒循環壹次

}

echo '發送完畢!';

>

將代碼保存為timer_sms.php,打開命令行,執行定時器:

php timer_sms.php

好了,php定時器將會根據設定的時間間隔(這裏設的是10秒),自動完成發送短信的任務。任務完成後將自動退出定時器,不再占用服務器資源。

根據我的測試,PHP定時器占用資源並不多,不會對服務器造成壓力。而且是異步訪問數據庫,也不會影響數據庫的運行。

這種方式的優點是:

1、後臺運行,前臺無需等待

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