Heim >Backend-Entwicklung >PHP-Problem >Der Unterschied zwischen PHP-Langverbindung und Kurzverbindung
Stellen Sie zunächst den Unterschied zwischen kurzen und langen Links vor:
Kurzlink
Verbinden->Daten übertragen->Verbindung schließen (empfohlenes Lernen: PHP-Programmierung vom Anfänger bis zum Experten)
HTTP ist beispielsweise ein zustandsloser Kurzlink, Browser und Server Sobald eine HTTP-Operation ausgeführt wird, wird eine Verbindung hergestellt, die Verbindung wird jedoch beendet, wenn die Aufgabe abgeschlossen ist.
Konkret initiiert und baut der Browser-Client eine TCP-Verbindung auf. Der Client sendet eine HttpRequest-Nachricht. Der Server empfängt die Nachricht und sendet eine HttpResponse-Nachricht an das Frontend unmittelbar nach dem Senden der socket.close-Methode –>Client empfängt die Antwortnachricht –>Client erhält schließlich ein Signal vom Server, um die TCP-Verbindung zu trennen –>Client trennt die TCP-Verbindung, insbesondere durch Aufrufen der Close-Methode.
Man kann auch sagen: Kurze Verbindung bedeutet, dass nach dem Anschließen von SOCKET die Verbindung nach dem Senden und Empfangen von Daten sofort getrennt wird.
Da die Verbindung nach Erhalt der Daten getrennt wird, findet bei jeder Datenannahme und -verarbeitung kein Kontakt statt. Dies ist einer der Gründe, warum das HTTP-Protokoll zustandslos ist.
Lange Verbindung
Verbinden->Daten übertragen->In Verbindung bleiben->Daten übertragen-> ........... ->Bis eine Partei die Verbindung schließt, schließt möglicherweise der Client die Verbindung.
Eine lange Verbindung bedeutet, dass nach dem Herstellen einer SOCKET-Verbindung die Verbindung bestehen bleibt, unabhängig davon, ob sie verwendet wird oder nicht, die Sicherheit jedoch schlecht ist.
Jedes Mal, wenn wir auf ein PHP-Skript zugreifen, erhalten wir das Rückgabeergebnis erst, nachdem alle PHP-Skripte ausgeführt wurden. Wenn wir ein Skript zur kontinuierlichen Ausführung benötigen, müssen wir eine lange PHP-Verbindung verwenden, um den Zweck des Betriebs zu erreichen.
Die allgemeine PHP-Umgebung ist Apache+PHP+Linux, aber da Apache ein Zeitlimit für PHP-Verbindungen hat, wird der Apache-Server im Allgemeinen automatisch getrennt, wenn diese Verbindungszeit überschritten wird.
In diesem Fall ist es einfacher und bequemer, set_time_limit(0) auf der PHP-Seite festzulegen (natürlich kann es auch in der Konfigurationsdatei php.ini festgelegt werden, aber das hat Auswirkungen auf (Schließlich möchten wir nicht, dass alle Verbindungen über einen längeren Zeitraum verbunden sind, was sich auf die Leistung des Dienstes auswirkt.)
Jedes PHP-Skript begrenzt die Ausführungszeit, daher müssen wir die Ausführungszeit festlegen Setzen Sie ein Skript über set_time_limit auf unbegrenzt und verwenden Sie dann „flush()“ und „ob_flush()“, um den Serverpuffer zu löschen und den Rückgabewert des Skripts jederzeit auszugeben.
<?php header("Content-Type: text/plain"); set_time_limit(0); while( true ) { // 持续执行的脚本 flush(); ob_flush(); sleep(5); } ?>
Nachdem wir es ausgeführt haben, führen wir es alle 5 Sekunden aus. Mit dieser Methode können wir viele Funktionen wie Hintergrundüberwachungsprogramm, geplante Ausführungsfunktion, Protokollanalyse, Datensortierung usw. ausführen.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen PHP-Langverbindung und Kurzverbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!