這次帶給大家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中文網其它相關文章!
推薦閱讀:
以上是PHP+MySQL做出訊息佇列功能(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!