In herkömmlichen Webanwendungen werden normalerweise kurze Verbindungen verwendet, um zu kommunizieren. Immer wenn ein Client eine Anforderung an den Server sendet, verarbeitet der Server die Anforderung und gibt eine Antwort zurück und trennen Sie sie dann sofort. In bestimmten Anwendungsszenarien, wie z. B. Echtzeit-Chat, Push-Nachrichten usw., können lange Verbindungen bessere Echtzeit- und interaktive Erfahrung bieten. In diesem Artikel wird mit spezifischen Codebeispielen eine effiziente lang zusammenbindende Kommunikation in PHP ermittelt.
Um eine lang verbundene Kommunikation in PHP zu implementieren, gibt es zwei Haupttechnologien: Umfragen und Websocket.
Umfragen ist eine einfache lang zusammenbindende Kommunikationstechnologie. Sein grundlegendes Prinzip ist, dass der Client ständig Anfragen an den Server sendet. Nach Empfang der Anfrage prüft der Server, ob neue Daten an den Client vorgelegt werden müssen. Wenn ja, geben Sie die Daten sofort zurück. Wenn nicht, behalten Sie die Verbindung, bis neue Daten verfügbar sind. Der Nachteil der Umfrage besteht darin, dass eine große Anzahl ungültiger Anforderungen generiert werden kann, was die Belastung des Servers erhöht.
Hier finden Sie einen einfachen Abfragescode:
<?php // Serverseite $data = "Hello, World!"; // Daten, die gedrückt werden müssen while (true) { $newData = checkNewData(); // Überprüfen Sie nach neuen Daten if ($newData) { echo $newData; flush(); // Senden Sie sofort eine Antwort break; } usleep(1000); // Schlafen1Millisekunde,vermeidenCPUZu hohe Belegung } // Kunde set_time_limit(0); // Stornieren Sie das Timeout -Limit while (true) { $response = sendRequest(); // Senden Sie eine Anfrage if ($response) { echo $response; } usleep(1000); // Schlafen1Millisekunde } ?>
WebSocket ist ein effizienteres und leistungsstarkeres Kommunikationsprotokoll, das die Full-Duplex-Kommunikation unterstützt und Clients und Servern ermöglicht, sich gegenseitig Nachrichten zu senden, ohne auf Anfragen zu warten. Dies macht Websocket sehr geeignet für Anwendungsszenarien mit hohen Echtzeitanforderungen wie Online-Spielen, Echtzeit-Chat, Stock Push usw.
Hier ist ein einfacher WebSocket -Beispielcode:
<?php // Serverseite $server = new WebSocketServer("localhost", 8000); // erstellenWebSocketServerobjekt while (true) { $client = $server-> akzeptieren(); // Client -Verbindung akzeptieren, während (true) { $ message = $ client-> empfangen (); // Client -Nachrichten empfangen, wenn ($ message) { // Client -Nachrichten verarbeiten // $ data = processMessage ($ message); // die verarbeiteten Daten in den Client drücken // $ client-> send ($ data); } } $ client-> close (); // Client -Verbindung schließen} // Client $ socket = new WebSocketClient ("WS: // localhost: 8000"); // WebSocket -Client -Objekt erstellen, während (true) { $ message = $ socket-> empfangen (); // Servernachricht empfangen, wenn ($ message) { // Servermeldungen verarbeiten // $ data = processMessage ($ message); // Zeigen Sie die verarbeiteten Daten dem Benutzer an // Echo $ Data; } // eine Nachricht an den Server senden // $ socket-> send ($ message); } ?>
Dieser Artikel beschreibt zwei gängige Möglichkeiten zur Implementierung einer lang zusammenbindenden Kommunikation in PHP: Polling und WebSocket. Jede Methode hat ihre Vor- und Nachteile, und die Auswahl der richtigen Lösung erfordert Kompromisse auf der Grundlage bestimmter Anwendungsbedarf. Hoffentlich können Sie durch diese Stichprobencodes eine lang verbundene Kommunikationstechnologie besser verstehen und anwenden, um eine Echtzeit-Dateninteraktion zu erreichen.