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

不言
Libérer: 2023-03-25 17:38:01
original
1219 Les gens l'ont consulté

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;;
?>
Copier après la connexion

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

php timer_sms.php
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal