ホームページ  >  記事  >  バックエンド開発  >  PHP+MySQLによるメッセージキュー実装方法の解析

PHP+MySQLによるメッセージキュー実装方法の解析

不言
不言オリジナル
2018-05-09 10:20:081207ブラウズ

この記事では、主に PHP + MySQL でメッセージ キューを実装する方法を紹介し、メッセージ キューを構築し、タイマーを使用して情報を断続的に送信するための php + mysql の関連操作スキルをサンプルの形式で分析します。この記事の例では、PHP+MySQL がメッセージ キュー メソッドを実装する方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

最近、テキスト メッセージをバッチで送信する必要が生じました。テキスト メッセージ インターフェイスはサードパーティによって提供されています。最初は、携帯電話番号を取得した後、インターフェイスをループで呼び出して送信すれば十分ではないかと思いました。

しかし、問題はすぐに発見されました。テキスト メッセージの数が多いと、時間がかかるだけでなく、成功率も非常に低くなります。

そこで、PHP と MySQL を使用してメッセージ キューを実装し、テキスト メッセージを 1 つずつ送信することを考えました。具体的な実装方法は以下で紹介します:

まず、次のフィールドを含むデータテーブル sms を作成します:

id、
phone、//携帯電話番号

content //SMS コンテンツ

テキスト メッセージと携帯電話送信する必要がある電話番号を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

OK、PHP タイマーは、設定された時間間隔 (ここでは 10 秒に設定されています) に従ってテキスト メッセージを送信するタスクを自動的に完了します。タスクが完了すると、タイマーは自動的に終了し、サーバー リソースを占有しなくなります。

私のテストによると、PHP タイマーは多くのリソースを占有せず、サーバーに負荷をかけません。また、データベースに非同期でアクセスしても、データベースの動作には影響しません。

この方法の利点は次のとおりです:

1. バックグラウンドで実行され、フロントエンドで待機する必要がありません

2. 成功率が高く、失敗したレコードは成功するまで自動的に再送信されます

関連する推奨事項:

php+ について mysql ファジークエリ関数に関する知識

html php+MySQL を使用したフロントエンドとバックエンドの完全な対話


以上がPHP+MySQLによるメッセージキュー実装方法の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP 配列関数次の記事:PHP 配列関数