Aktueller Standort: Startseite> Neueste Artikel> Ein vollständiges Tutorial zur Implementierung der Echtzeitüberwachung und E-Mail-Benachrichtigung von Redis-Nachrichtenabonnements in PHP

Ein vollständiges Tutorial zur Implementierung der Echtzeitüberwachung und E-Mail-Benachrichtigung von Redis-Nachrichtenabonnements in PHP

M66 2025-10-28

Ideen zur Implementierung des Redis-Nachrichtenabonnements und der E-Mail-Benachrichtigung in PHP

In modernen Echtzeitanwendungen ist die Funktionalität zur Nachrichtenbenachrichtigung zu einem wesentlichen Bestandteil geworden. Der von Redis bereitgestellte Veröffentlichungs- und Abonnementmechanismus (Pub/Sub) ermöglicht es dem Server und dem Client, in Echtzeit mit Nachrichten zu interagieren. Durch die Kombination der Swoole-Coroutine-Erweiterung in PHP kann ein leistungsstarkes, kontinuierlich überwachendes Nachrichtenverarbeitungs- und E-Mail-Benachrichtigungssystem realisiert werden.

Installieren Sie die erforderlichen Abhängigkeiten

Bevor Sie Code schreiben, müssen Sie sicherstellen, dass die Erweiterungen Swoole und Redis in der Umgebung installiert sind. Linux-Systeme können mit dem folgenden Befehl installiert werden:

 pecl install swoole
pecl install redis

Wenn Sie ein Windows-System verwenden, können Sie auf der offiziellen PECL-Website die entsprechende DLL-Erweiterungsdatei manuell herunterladen und installieren.

Erstellen Sie ein PHP-Listening-Skript

Erstellen Sie eine Skriptdatei mit dem Namen notify.php, um Redis-Nachrichtenabonnements kontinuierlich zu überwachen und den E-Mail-Versand auszulösen. Das Codebeispiel lautet wie folgt:

 <?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) {
    // Senden Sie eine E-Mail-Benachrichtigung, nachdem Sie die Nachricht erhalten haben
    sendEmail($message);
});

Coroutine::create(function () use ($redis) {
    $redis->subscribe(['channel'], function ($redis, $channel, $message) {
        // Senden Sie eine E-Mail-Benachrichtigung, nachdem Sie die Nachricht erhalten haben
        sendEmail($message);
    });
});

function sendEmail($message) {
    // Senden Sie E-Mails mithilfe der E-Mail-Versandbibliothek
    // code...
}

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

Im obigen Code instanziieren wir zunächst den Redis-Client und stellen eine Verbindung zum Redis-Server her. Abonnieren Sie den angegebenen Kanal über die subscribe -Methode. Wenn neue Nachrichten überwacht werden, wird die Rückruffunktion ausgelöst und die Funktion sendEmail() aufgerufen, um E-Mail-Benachrichtigungen zu senden. Diese Funktion kann je nach Projektanforderungen jede E-Mail-Versandbibliothek (wie PHPMailer, SwiftMailer usw.) integrieren.

Darüber hinaus ermöglicht die Verwendung der Swoole-Coroutine, dass das Programm im Hintergrund aktiv bleibt und regelmäßig mit dem Redis-Server kommuniziert, um zu verhindern, dass die Verbindung getrennt wird.

Führen Sie das Listening-Skript aus

Führen Sie nach dem Speichern des obigen Codes den folgenden Befehl in der Befehlszeile aus, um die Überwachung zu starten:

 php notify.php

Dieses Skript wird weiterhin ausgeführt, überwacht weiterhin den Redis-Kanal auf Nachrichtenänderungen und sendet automatisch E-Mail-Benachrichtigungen, wenn neue Nachrichten eingehen.

Zusammenfassen

Durch die Kombination der Swoole-Coroutine von PHP mit dem Veröffentlichungs- und Abonnementmechanismus von Redis können wir Echtzeit-Nachrichtenüberwachungs- und E-Mail-Benachrichtigungssysteme effizient implementieren. Diese Architektur eignet sich besonders für Anwendungsszenarien wie Echtzeit-Chat-Systeme, Systemwarnbenachrichtigungen und Datenänderungs-Push. Es vereinfacht nicht nur die Verarbeitungslogik asynchroner Aufgaben, sondern verbessert auch die Parallelitätsleistung und Reaktionsgeschwindigkeit des Systems erheblich.