Aktueller Standort: Startseite> Neueste Artikel> So implementieren Sie Server -Push in PHP: Vergleich der WebSocket- und SSE -Technologie

So implementieren Sie Server -Push in PHP: Vergleich der WebSocket- und SSE -Technologie

M66 2025-06-18

Wie löste ich das Problem des Server -Push -Problems in der Entwicklung der PHP -Backend -Funktion?

Server Push ist eine häufige Anforderung bei der Back-End-Entwicklung, insbesondere wenn Anwendungen Daten in Echtzeit an Clients senden müssen. PHP kann einen Server-Push durch zwei Technologien implementieren: WebSocket- und Server-Sent-Ereignisse (SSE). Diese beiden Technologien haben ihre eigenen Vor- und Nachteile, und die Auswahl der richtigen Technologie kann dazu beitragen, Probleme in der tatsächlichen Entwicklung zu lösen.

Websocket

WebSocket ist ein vollständiges Duplex-Protokoll, das eine anhaltende Verbindung zwischen dem Client und dem Server herstellt und in Echtzeit eine Zwei-Wege-Datenübertragung durchführen kann. In PHP können wir SWOOLE -Erweiterungen verwenden, um WebSocket zu implementieren.

Stellen Sie zunächst sicher, dass die SWOOLE -Erweiterung installiert ist, die über den folgenden Befehl installiert werden kann:

pecl swoole installieren

Erstellen Sie dann einen WebSocket -Server in PHP. Sie können sich auf den folgenden Code verweisen:

$ server = new shoolewebsocketserver ("0.0.0.0", 9501);

$ server-> on ("open", function (shoolewebsocketserver $ server, $ request) {
    echo "angeschlossen";
});

$ server-> on ("meldung", function (shoolewebsocketserver $ server, $ frame) {
    echo "Empfangene Nachricht: {$ Frame-> Daten}";
    // Logik $ server-> push ($ Frame-> fd, "Servermeldung");
});

$ server-> on ("close", function (shoolewebsocketserver $ server, $ fd) {
    echo "getrennt";
});

$ server-> start ();

Dieser Code erstellt einen WebSocket -Server, der drei Ereignisrückrufe definiert: Öffnen, Nachrichten und Schließen. Im Rückruf von Nachrichtenereignissen kann der Server Daten basierend auf der empfangenen Nachricht verarbeiten und schieben.

Server-Sent-Ereignisse (SSE)

Server-Sent-Ereignisse (SSE) ist ein Einweg-Kommunikationsprotokoll, mit dem der Server den Datenfluss zum Client überschreiten kann. Bei der Verwendung von SSE kann der Client nur Nachrichten vom Server empfangen und keine Daten nicht aktiv an den Server senden.

Hier ist eine Beispielimplementierung von SSE:

Header ("Inhaltstyp: Text/Ereignisstream");
Header ("Cache-Control: No-Cache");
Header ("Verbindung: Keep-Alive");

$ count = 0;

while (wahr) {
    echo "Daten: {$ count} \ n \ n";
    spülen();
    // Logik $ count ++ drücken;
    Schlaf (1);
}

Der obige Code legt die Antwort -Header -Informationen ein und verwendet eine unendliche Schleife, um Daten regelmäßig an den Client zu übertragen. Durch Einstellen der Verzögerung können Sie die Häufigkeit des Pushs steuern.

Zusammenfassen

Unabhängig davon, ob Websocket oder SSE verwendet wird, kann PHP Server -Push -Funktionen implementieren. WebSocket ist für eine bidirektionale Echtzeitkommunikation geeignet, während SSE für den unidirektionalen Datenfluss geeignet ist. Entwickler können geeignete Technologien basierend auf bestimmten Anforderungen auswählen und Push -Logik basierend auf tatsächlichen Szenarien schreiben.