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é.
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é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'aide de la bibliothèque d'envoi d'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.
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.
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.