首頁  >  文章  >  後端開發  >  PHP+MySQL做出訊息佇列功能(附程式碼)

PHP+MySQL做出訊息佇列功能(附程式碼)

php中世界最好的语言
php中世界最好的语言原創
2018-05-11 15:37:161932瀏覽

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

推薦閱讀:

Puppeteer入門程式碼

Vue資料監聽watch使用說明

以上是PHP+MySQL做出訊息佇列功能(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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