Maison  >  Article  >  développement back-end  >  Analyse de la méthode d'implémentation de la file d'attente de messages avec PHP+MySQL

Analyse de la méthode d'implémentation de la file d'attente de messages avec PHP+MySQL

不言
不言original
2018-05-09 10:20:081220parcourir

Cet article présente principalement la méthode d'implémentation de la file d'attente de messages avec PHP+MySQL et analyse les compétences opérationnelles associées de php+mysql pour créer une file d'attente de messages et utiliser une minuterie pour envoyer des informations par intermittence sous forme d'exemples. à cela

L'exemple de cet article décrit la méthode d'implémentation de la file d'attente de messages avec PHP+MySQL. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Récemment, j'ai rencontré le besoin d'envoyer des messages texte par lots. L'interface de messagerie texte est fournie par un tiers. Au début je me suis dit qu'après avoir obtenu le numéro de téléphone portable, ne suffirait-il pas d'appeler l'interface en boucle pour l'envoyer ?

Mais un problème a été rapidement découvert : lorsque le nombre de SMS est important, cela prend non seulement du temps, mais a également un faible taux de réussite.

J'ai donc pensé à utiliser PHP et MySQL pour implémenter une file d'attente de messages et envoyer des messages texte un par un. La méthode de mise en œuvre spécifique est présentée ci-dessous :

Tout d'abord, créez un tableau de données sms, comprenant les champs suivants :

id,
téléphone, //Numéro de téléphone portable
contenu / /Contenu SMS

Enregistrez les messages texte et les numéros de téléphone portable à envoyer dans le tableau sms.

Ensuite, vous devez utiliser PHP pour implémenter une minuterie permettant de lire régulièrement un enregistrement et d'envoyer un message texte :

<?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;;
?>

Modifier le code Enregistrez-le sous timer_sms.php, ouvrez la ligne de commande et exécutez le timer :

php timer_sms.php

Eh bien, le timer php sera basé sur le définir l'intervalle de temps (le paramètre ici est de 10 secondes) pour terminer automatiquement la tâche d'envoi de messages texte. Une fois la tâche terminée, le minuteur se fermera automatiquement et n'occupera plus les ressources du serveur.

D'après mes tests, le timer PHP n'occupe pas beaucoup de ressources et ne mettra pas de pression sur le serveur. De plus, l'accès à la base de données de manière asynchrone n'affectera pas le fonctionnement de la base de données.

Les avantages de cette méthode sont :

1. Fonctionner en arrière-plan, pas besoin d'attendre à la réception

2. le taux est élevé et les enregistrements ayant échoué seront automatiquement renvoyés jusqu'à ce qu'ils soient réussis

Recommandations associées :

Connaissances connexes sur la fonction de requête floue php+mysql

html et php+MySQL Interaction complète front-end et back-end


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Fonctions de tableau PHPArticle suivant:Fonctions de tableau PHP