Avec le développement d'Internet, le courrier électronique est devenu une partie indispensable de la communication quotidienne. Cependant, dans le cas d'une croissance rapide des entreprises et d'une augmentation des utilisateurs, l'envoi de grandes quantités d'e-mails peut entraîner une dégradation des performances du serveur ou une défaillance de l'envoi de courrier. Pour éviter ces problèmes, l'utilisation du système de file d'attente de courrier peut gérer efficacement l'envoi du courrier via le traitement en série.
Le processus de fonctionnement du système de file d'attente par courrier est le suivant:
La mise en œuvre d'un simple système de files d'attente de courrier PHP implique généralement les étapes suivantes:
Voici un simple exemple de code système de file d'attente de messagerie PHP:
// Créer une liste de files d'attente par courrier<br> $ database-> Query ("Créer une table s'il n'y a pas un e-mail_queue (<br> id int (11) pas null auto_increment,<br> à varchar (255) pas nul,<br> de Varchar (255) pas nul,<br> sujet varchar (255) pas nul,<br> Texte du corps non nulle,<br> attachement varchar (255) par défaut null,<br> status enum («en attente», «envoyé», «échoué») pas null par défaut «en attente»,<br> Clé primaire (ID)<br> ) ");
// File d'attente<br> $ à = "récipiendaire@example.com";<br> $ from = "Sender@example.com";<br> $ sujet = "Sujet par e-mail";<br> $ body = "Email Body";<br> $ attachment = "path / to / attachment.pdf";<br> $ database-> requête ("insérer dans les valeurs e-mail_queue (à, de, sujet, corps, pièce jointe) ('$ to', '$ from', '$ sujet', '$ body', '$ attachment')");
// Email Envoyer un script<br> $ SQL = "SELECT * FROM EMAIL_QUEUE où status = 'En attente' limite 1";<br> $ email = $ database-> requête ($ sql) -> fetch ();
if ($ email) {<br> // Envoyer un e-mail<br> if (Send_email ($ e-mail ['à'], $ e-mail ['de'], $ e-mail ['sujet'], $ email ['body'], $ e-mail ['pièce jointe'])) {<br> // Envoi avec succès, le statut de mise à jour est envoyé<br> $ database-> Query ("Update` email_queue` set `status` = 'envoyée' où` id` = '$ e-mail [id]' ");<br> } autre {<br> // Envoi échoué, l'état de mise à jour est échoué<br> $ DATABASE-> Query ("Update` Email_queue` SET `Status` = 'Faiched' où` id` = '$ e-mail [id]' ");<br> }<br> }
Dans cet exemple, nous utilisons MySQL comme base de données pour stocker les informations de file d'attente par courrier. Lorsque le courrier est en cours, les informations du courrier sont insérées dans la table de la base de données. Le courrier envoyant le script vérifie périodiquement la file d'attente et traite le courrier à envoyer. Si l'envoi est réussi, l'état de l'e-mail est mis à jour pour «envoyer»; S'il échoue, il est marqué comme "Send a échoué".
En introduisant le système de files d'attente PHP Mail, nous pouvons non seulement améliorer l'efficacité de l'envoi du courrier, mais aussi empêcher le serveur de s'écraser sous une charge élevée. Dans le même temps, le système de file d'attente de courrier fournit de meilleurs mécanismes de gestion des erreurs, tels que des enregistrements de réessayer automatiquement et d'envoi de défaillance. Pour la nécessité d'envoyer un grand nombre d'e-mails, ce système peut considérablement améliorer le taux de réussite de l'envoi et rendre la gestion plus pratique.
Si vous souhaitez développer davantage ce système, vous pouvez envisager d'augmenter la priorité de l'envoi d'e-mail et d'ajouter des fonctions d'envoi retardées, ce qui peut améliorer la flexibilité et l'évolutivité du système.