這篇文章主要介紹了PHP MySQL實現訊息佇列的方法,結合實例形式分析了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、成功率高,失敗的記錄會自動重發,直到成功
相關推薦:
#
以上是PHP+MySQL實作訊息佇列的方法分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!