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.
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 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 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.
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.