Heim > Artikel > Backend-Entwicklung > Wie hört PHP weiterhin auf Redis-Nachrichtenabonnements und schiebt sie an das Frontend?
Wie hört PHP weiterhin auf Redis-Nachrichtenabonnements und schiebt sie an das Frontend?
Überblick:
In vielen Webanwendungen sind Echtzeit-Push-Nachrichten eine häufige Anforderung. Wenn wir Nachrichten in Echtzeit an das Front-End senden müssen, verwenden wir häufig Polling oder Long Polling, um die neuesten Daten zu erhalten. Diese Methode verbraucht jedoch viele Serverressourcen und die Antwortgeschwindigkeit ist nicht in Echtzeit ausreichend. Die Verwendung des Nachrichtenwarteschlangenmechanismus von Redis kann dieses Problem sehr gut lösen. In diesem Artikel wird erläutert, wie Sie mit PHP Redis-Nachrichtenabonnements kontinuierlich überwachen und Nachrichten in Echtzeit an das Front-End senden.
Implementierungsschritte:
sudo apt-get install redis-server sudo apt-get install php-redis
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { // 将消息推送到前端 echo "<script>console.log('New message:', " . $message . ");</script>"; ob_flush(); flush(); }); $redis->close(); ?>
In Stellen Sie mit diesem Code zunächst über die Verbindungsmethode von Redis eine Verbindung zum lokalen Redis-Server her und abonnieren Sie mit der Subscribe-Methode den angegebenen Kanal (Kanalname). Wenn eine Nachricht eintrifft, leitet die Rückruffunktion die Nachricht an das Frontend weiter.
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <div id="message-holder"></div> <script> function showMessage(message) { $('#message-holder').append('<p>' + message + '</p>'); } </script> </body> </html>
In diesem Code verwenden wir die jQuery-Bibliothek, um das DOM zu bedienen, indem wir es definieren eine showMessage-Funktion, die die empfangene Nachricht auf der Seite anzeigt.
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { //将消息推送到前端 echo "<script>window.parent.showMessage('" . $message . "');</script>"; ob_flush(); flush(); }); $redis->close(); ?>
Der Schlüsselteil dieses Codes ist die Echo-Anweisung Mit der Funktion showMessage wird die Nachricht an die Frontend-Seite übergeben.
php subscribe.php
Wenn jetzt eine neue Nachricht eintrifft, wird das PHP-Skript verwendet verschiebt die Nachricht zur Anzeige in Echtzeit auf die Startseite.
Zusammenfassung:
Durch die oben genannten Schritte können wir PHP verwenden, um Redis-Nachrichtenabonnements kontinuierlich zu überwachen und Nachrichten in Echtzeit an die Front-End-Seite zu senden. Auf diese Weise kann die Funktion des Pushens von Nachrichten in Echtzeit realisiert und das Problem der Verschwendung von Serverressourcen und einer unzureichenden Echtzeit-Antwortgeschwindigkeit, die durch die Verwendung von Abfragen oder langen Abfragemethoden verursacht wird, vermieden werden. Darüber hinaus kann der Code entsprechend den tatsächlichen Anforderungen optimiert und erweitert werden, um die Systemleistung und -stabilität zu verbessern.
Das obige ist der detaillierte Inhalt vonWie hört PHP weiterhin auf Redis-Nachrichtenabonnements und schiebt sie an das Frontend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!