首頁  >  文章  >  後端開發  >  PHP+MySQL實作訊息佇列的方法分析

PHP+MySQL實作訊息佇列的方法分析

不言
不言原創
2018-05-09 10:20:081194瀏覽

這篇文章主要介紹了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[&#39;phone&#39;],$item[&#39;content&#39;]); //发送短信
  if($res){
    $db->deleteFristRecord(); //删除发送成功的记录
    echo $item[&#39;phone&#39;].&#39;发送成功&#39;;
  }else{
    echo $item[&#39;phone&#39;].&#39;发送失败,稍后继续尝试&#39;;
  }
  sleep(10); //每隔十秒循环一次
}
echo &#39;发送完毕!&#39;;
?>

將程式碼儲存為timer_sms.php,開啟指令列,執行定時器:

php timer_sms.php

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

根據我的測試,PHP計時器佔用資源並不多,不會對伺服器造成壓力。而且是非同步存取資料庫,也不會影響資料庫的運作。

這種方式的優點是:

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

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

相關推薦:

關於php mysql模糊查詢功能的相關知識

html 與php MySQL完成前後端交互


#

以上是PHP+MySQL實作訊息佇列的方法分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP數組函數下一篇:PHP數組函數