Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes pour implémenter la file d'attente de messages avec PHP+MySQL

Explication détaillée des étapes pour implémenter la file d'attente de messages avec PHP+MySQL

php中世界最好的语言
php中世界最好的语言original
2018-05-16 10:21:362096parcourir

Cette fois, je vais vous apporter une explication détaillée des étapes pour implémenter la file d'attente de messages avec PHP+MySQL Quelles sont les notes pour implémenter la file d'attente de messages avec PHP+MySQL Ici. sont des cas pratiques. Jetons un coup d'oeil une fois.

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,
phone, //手机号
content //短信内容

Enregistrez les messages texte et les numéros de téléphone portable qui doit être envoyé.

Ensuite, vous devez utiliser PHP pour implémenter un timer pour lire régulièrement un enregistrement et 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;;
?>

Enregistrez le code sous timer_sms.php , Ouvrez la ligne de commande et exécutez le minuteur :

php timer_sms.php

D'accord, le minuteur php terminera automatiquement enverra le message texte selon l'intervalle de temps défini (ici il est fixé à 10 secondes) tâche. 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 échoués seront automatiquement réédités jusqu'à ce qu'ils réussissent

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le php chinois. site web!

Lecture recommandée :

Explication détaillée des étapes pour implémenter la fonction glisser-déposer à l'aide de Vue

Explication détaillée de les étapes pour créer un robot de compte personnel WeChat à l'aide du nœud

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