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?

王林
王林Original
2023-09-05 17:42:29757Durchsuche

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:

  1. Redis- und PHP-Erweiterungen installieren:
    Zuerst müssen Sie Redis installieren und sicherstellen, dass die PHP-Redis-Erweiterung auf dem Server installiert wurde. Redis und Redis-Erweiterungen können über den folgenden Befehl installiert werden:
sudo apt-get install redis-server
sudo apt-get install php-redis
  1. Erstellen Sie ein PHP-Skript für das Redis-Nachrichtenabonnement:
    Erstellen Sie ein PHP-Skript zum Abhören des Redis-Nachrichtenabonnements. Das Codebeispiel lautet wie folgt:
<?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.

  1. Erstellen Sie eine Front-End-Seite:
    Erstellen Sie eine Front-End-Seite, um die empfangene Nachricht anzuzeigen. Das Codebeispiel lautet wie folgt:
<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.

  1. Einbetten der Frontend-Seite in das PHP-Skript:
    Einbetten der Frontend-Seite in das PHP-Skript:
<?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.

  1. Führen Sie das Skript aus:
    Speichern Sie das obige PHP-Skript als subscribe.php und die Frontend-Seite als index.html und führen Sie dann den folgenden Befehl im Terminal aus:
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn