Heim >Backend-Entwicklung >PHP-Problem >Was ist der Unterschied zwischen langer und kurzer Verbindung in PHP?

Was ist der Unterschied zwischen langer und kurzer Verbindung in PHP?

青灯夜游
青灯夜游Original
2021-10-11 18:04:231898Durchsuche

Der Unterschied zwischen langer und kurzer Verbindung in PHP: 1. Kurze Verbindung bedeutet, dass die Verbindung sofort nach dem Senden und Empfangen von Daten getrennt wird, nachdem die SOCKET-Verbindung hergestellt wurde Die Verbindung bleibt bestehen, unabhängig davon, ob sie verwendet wird oder nicht, bis eine Partei die Verbindung schließt. 2. Im Vergleich zu kurzen Verbindungen sind lange Verbindungen weniger sicher.

Was ist der Unterschied zwischen langer und kurzer Verbindung in PHP?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP Version 7.1, DELL G3-Computer

Kurze Verbindung

Verbinden ->Daten übertragen->Verbindung schließen

Beispielsweise handelt es sich bei HTTP um einen zustandslosen Kurzlink. Jedes Mal, wenn der Browser und der Server einen HTTP-Vorgang ausführen, wird eine Verbindung hergestellt, die Verbindung wird jedoch unterbrochen, 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 –>Server-Handle und sendet eine HttpResponse-Nachricht an das Frontend und ruft sofort socket.close auf Methode nach dem Senden –>Client erhält 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 das auch sagen: Kurze Verbindung bedeutet, dass nach dem Anschließen des SOCKET die Verbindung nach dem Senden und Empfangen von Daten sofort getrennt wird.

Da die Verbindung nach Erhalt der Daten getrennt wird, erfolgt bei jeder Datenannahme und -verarbeitung kein Kontakt. Dies ist einer der Gründe, warum das HTTP-Protokoll zustandslos ist.

Lange Verbindung

Verbinden->Daten übertragen->Verbindung beibehalten->Daten übertragen->..........->Bis eine Partei die Verbindung schließt, mehr Es ist der Client, der die Verbindung schließt.

Lange Verbindung bedeutet, dass nach dem Herstellen einer SOCKET-Verbindung diese verbunden 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, trennt der Apache-Server die Verbindung im Allgemeinen automatisch, wenn diese Verbindungszeit überschritten wird.

Der einfachere und bequemere Weg besteht in diesem Fall darin, set_time_limit(0) auf der PHP-Seite festzulegen (natürlich kann es auch in der Konfigurationsdatei php.ini festgelegt werden, dies hat jedoch Auswirkungen auf die gesamte Umgebung. Danach (Alles, wir möchten nicht alle Verbindungen einschränken. Kann eine lange Verbindung herstellen, was sich auf die Leistung des Dienstes auswirkt)

Jedes PHP-Skript begrenzt die Ausführungszeit, daher müssen wir die Ausführungszeit eines Skripts über set_time_limit auf unbegrenzt einstellen Verwenden Sie „flush()“ und „ob_flush()“, um den Serverpufferbereich zu löschen und jederzeit den Rückgabewert des Skripts 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 ausführen, z. B. Hintergrundüberwachungsprogramme, geplante Ausführungsfunktionen, Protokollanalyse, Datensortierung und andere zeitaufwändige Vorgänge.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen langer und kurzer Verbindung in PHP?. 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