首頁 >後端開發 >php教程 >PHP+MySQL實作訊息佇列步驟詳解

PHP+MySQL實作訊息佇列步驟詳解

php中世界最好的语言
php中世界最好的语言原創
2018-05-16 10:21:362129瀏覽

這次帶給大家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中文網其它相關文章!

推薦閱讀:

使用Vue實現拖曳功能步驟詳解

#node做出微信個人號機器人步驟詳解

#

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

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