Position actuelle: Accueil> Derniers articles> Un tutoriel complet sur la mise en œuvre de la surveillance en temps réel de l'abonnement aux messages Redis et de la notification par e-mail en PHP

Un tutoriel complet sur la mise en œuvre de la surveillance en temps réel de l'abonnement aux messages Redis et de la notification par e-mail en PHP

M66 2025-10-28

Idées pour implémenter l'abonnement aux messages Redis et la notification par e-mail en PHP

Dans les applications modernes en temps réel, la fonctionnalité de notification de messages est devenue un élément essentiel. Le mécanisme de publication et d'abonnement (Pub/Sub) fourni par Redis permet au serveur et au client d'interagir avec les messages en temps réel. En combinant l'extension coroutine Swoole en PHP, un système de traitement des messages et de notification par e-mail de surveillance continue et hautes performances peut être réalisé.

Installer les dépendances requises

Avant d'écrire du code, vous devez vous assurer que les extensions Swoole et Redis sont installées dans l'environnement. Les systèmes Linux peuvent être installés avec la commande suivante :

 pecl install swoole
pecl install redis

Si vous utilisez un système Windows, vous pouvez accéder au site officiel de PECL pour télécharger manuellement le fichier d'extension DLL correspondant et l'installer.

Créer un script d'écoute PHP

Créez un fichier de script nommé notify.php pour surveiller en permanence les abonnements aux messages Redis et déclencher l'envoi d'e-mails. L'exemple de code est le suivant :

 <?php
require 'vendor/autoload.php';
use Swoole\Coroutine;
use Swoole\Coroutine\Redis;

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$redis->subscribe(['channel'], function ($redis, $channel, $message) {
    // Envoyer une notification par e-mail après réception du message
    sendEmail($message);
});

Coroutine::create(function () use ($redis) {
    $redis->subscribe(['channel'], function ($redis, $channel, $message) {
        // Envoyer une notification par e-mail après réception du message
        sendEmail($message);
    });
});

function sendEmail($message) {
    // Envoyer des e-mails à l&#39;aide de la bibliothèque d&#39;envoi d&#39;e-mails
    // code...
}

Coroutine::create(function () use ($redis) {
    while (true) {
        $redis->ping();
        Coroutine::sleep(5);
    }
});

Dans le code ci-dessus, nous instancions d'abord le client Redis et nous nous connectons au serveur Redis. Abonnez-vous à la chaîne spécifiée via la méthode d'abonnement . Lorsque de nouveaux messages sont surveillés, la fonction de rappel sera déclenchée et la fonction sendEmail() sera appelée pour envoyer des notifications par e-mail. Cette fonction peut intégrer n'importe quelle bibliothèque d'envoi d'emails (telle que PHPMailer, SwiftMailer, etc.) selon les besoins du projet.

De plus, l'utilisation de la coroutine Swoole permet au programme de rester actif en arrière-plan et de communiquer régulièrement avec le serveur Redis pour éviter que la connexion ne soit déconnectée.

Exécutez le script d'écoute

Après avoir enregistré le code ci-dessus, exécutez la commande suivante sur la ligne de commande pour démarrer la surveillance :

 php notify.php

Ce script restera en cours d'exécution, continuera à surveiller le canal Redis pour les modifications de messages et enverra automatiquement des notifications par e-mail lorsque de nouveaux messages seront reçus.

Résumer

En combinant la coroutine Swoole de PHP avec le mécanisme de publication et d'abonnement Redis, nous pouvons mettre en œuvre efficacement des systèmes de surveillance des messages et de notification par e-mail en temps réel. Cette architecture est particulièrement adaptée aux scénarios d'application tels que les systèmes de chat en temps réel, les notifications d'avertissement système et les modifications de données push. Cela simplifie non seulement la logique de traitement des tâches asynchrones, mais améliore également considérablement les performances de concurrence et la vitesse de réponse du système.