Heim Backend-Entwicklung PHP-Tutorial 判断Keep-Alive模式的HTTP请求的结束的实现代码_PHP

判断Keep-Alive模式的HTTP请求的结束的实现代码_PHP

Jun 01, 2016 pm 12:15 PM
http请求 keep-alive

所以根据EOF就可判断一次请求的结束,下面的代码(PHP)很常见:
复制代码 代码如下:
// $fp是由fsockopen()产生的句柄
while(!feof($fp)) {
echo fgets($fp);
}

(注:短连接模式是在头部用”Connection: close”标示,长连接用”Connection: keep-alive”标示。目前HTTP/1.0默认使用短连接,HTTP/1.1默认使用长连接。)
而长连接(也称持久连接)模式的HTTP在发送完数据后服务器并不断开连接,而是留着下一次HTTP请求时使用,所以长连接的好处是显而易见的,通过共用一个TCP连接来节省以后请求时建立/断开连接的开销。而EOF是直到这个TCP连接结束(超时或出错)时才会被发送,所以我们就不能使用上面的办法来判断一次HTTP请求的结束了。这也是使用长连接时都会遇到的一个问题。目前判断的方法主要有两种:
(1) 根据头中的Content-Length字段。这个字段标明了正文的长度,我们可以以接收完指定长度的字符为判断结束的依据。
(2) 在没有Content-Length时,根据Transfer-Encoding。有些时候服务器无法确定正文的大小,因为正文可能是动态产生的,所以就不会提供Content-Length了,而是采用chunk编码来一块一块地发送正文。每个chunk块由头部和正文两部分组成,头部中由一个16进制数字指定了正文的长度;最后由一个长度为0的chunk块来表示整个HTTP正文的结束。
下面我用PHP实现了有Content-Length时的判断方式:
1. 获得Content-Length值
复制代码 代码如下:
$length = 0;
$line = '';
while($line !== "\r\n") {
$line = fgets($fp);
if(substr($line, 0, 15) === 'Content-Length:') {
$length = intval(substr($line, 16));
}
}

2. 获得正文
复制代码 代码如下:
$sum = 0;
while($sum $line = fgets($fp);
$sum += strlen($line);
echo $line;
}

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL, um HTTP-Anfragen zu stellen Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL, um HTTP-Anfragen zu stellen Jul 29, 2023 pm 05:07 PM

Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL für HTTP-Anfragen. Einführung: Bei der Webentwicklung ist es häufig erforderlich, mit APIs von Drittanbietern oder anderen Remote-Servern zu kommunizieren. Die Verwendung von cURL zum Senden von HTTP-Anfragen ist eine gängige und leistungsstarke Methode. In diesem Artikel wird erläutert, wie Sie mit PHP cURL erweitern, um HTTP-Anfragen auszuführen, und einige praktische Codebeispiele bereitstellen. 1. Vorbereitung Stellen Sie zunächst sicher, dass PHP die cURL-Erweiterung installiert hat. Zur Überprüfung können Sie php-m|grepcurl in der Befehlszeile ausführen

So lösen Sie das Problem der abgelehnten HTTP-Anforderungsverbindung in der Java-Entwicklung So lösen Sie das Problem der abgelehnten HTTP-Anforderungsverbindung in der Java-Entwicklung Jun 29, 2023 pm 02:29 PM

So lösen Sie das Problem der Ablehnung einer HTTP-Anforderungsverbindung bei der Java-Entwicklung. Bei der Entwicklung von Java stoßen wir häufig auf das Problem der Ablehnung einer HTTP-Anforderungsverbindung. Dieses Problem kann auftreten, weil die Serverseite die Zugriffsrechte einschränkt oder die Netzwerk-Firewall den Zugriff auf HTTP-Anfragen blockiert. Um dieses Problem zu beheben, sind einige Anpassungen an Ihrem Code und Ihrer Umgebung erforderlich. In diesem Artikel werden mehrere gängige Lösungen vorgestellt. Überprüfen Sie zunächst die Netzwerkverbindung und den Serverstatus. Sie können versuchen, auf andere Websites oder Dienste zuzugreifen

Ursachenanalyse: HTTP-Anforderungsfehler 504 Gateway-Timeout Ursachenanalyse: HTTP-Anforderungsfehler 504 Gateway-Timeout Feb 19, 2024 pm 05:12 PM

Kurze Einführung in die Ursache des HTTP-Anfragefehlers: 504GatewayTimeout: Während der Netzwerkkommunikation interagiert der Client mit dem Server, indem er HTTP-Anfragen sendet. Allerdings kann es beim Absenden der Anfrage manchmal zu Fehlermeldungen kommen. Einer davon ist der 504GatewayTimeout-Fehler. In diesem Artikel werden die Ursachen und Lösungen für diesen Fehler untersucht. Was ist der 504GatewayTimeout-Fehler? GatewayTimeo

Lösung: Socket-Fehler bei der Verarbeitung von HTTP-Anfragen Lösung: Socket-Fehler bei der Verarbeitung von HTTP-Anfragen Feb 25, 2024 pm 09:24 PM

HTTP-Anfragefehler: Lösung für SocketError Bei Netzwerkanfragen treten häufig verschiedene Fehler auf. Eines der häufigsten Probleme ist SocketError. Dieser Fehler wird ausgegeben, wenn unsere Anwendung keine Verbindung mit dem Server herstellen kann. In diesem Artikel besprechen wir einige häufige Ursachen und Lösungen für SocketError. Zuerst müssen wir verstehen, was Socket ist. Socket ist ein Kommunikationsprotokoll, das Anwendungen ermöglicht

Legen Sie Abfrageparameter für HTTP-Anfragen mit Golang fest Legen Sie Abfrageparameter für HTTP-Anfragen mit Golang fest Jun 02, 2024 pm 03:27 PM

Um Abfrageparameter für HTTP-Anfragen in Go festzulegen, können Sie die Methode http.Request.URL.Query().Set() verwenden, die Abfrageparameternamen und -werte als Parameter akzeptiert. Zu den spezifischen Schritten gehören: Erstellen einer neuen HTTP-Anfrage. Verwenden Sie die Methode Query().Set(), um Abfrageparameter festzulegen. Verschlüsseln Sie die Anfrage. Führen Sie die Anfrage aus. Rufen Sie den Wert eines Abfrageparameters ab (optional). Abfrageparameter entfernen (optional).

Wie Nginx die Wiederholungskonfiguration von HTTP-Anfragen implementiert Wie Nginx die Wiederholungskonfiguration von HTTP-Anfragen implementiert Nov 08, 2023 pm 04:47 PM

Für die Implementierung der HTTP-Anforderungswiederholungskonfiguration sind bestimmte Codebeispiele erforderlich. Nginx ist ein sehr beliebter Open-Source-Reverse-Proxy-Server. Er verfügt über leistungsstarke Funktionen und flexible Konfigurationsoptionen und kann zur Implementierung der HTTP-Anforderungswiederholungskonfiguration verwendet werden. Bei der Netzwerkkommunikation kann es manchmal vorkommen, dass die von uns initiierte HTTP-Anfrage aus verschiedenen Gründen fehlschlägt, z. B. Netzwerkverzögerung, Serverlast usw. Um die Zuverlässigkeit und Stabilität der Anwendung zu verbessern, müssen wir es möglicherweise erneut versuchen, wenn die Anfrage fehlschlägt. Im Folgenden wird die Verwendung von Ng vorgestellt

So verwenden Sie Nginx zur Komprimierung und Dekomprimierung von HTTP-Anfragen So verwenden Sie Nginx zur Komprimierung und Dekomprimierung von HTTP-Anfragen Aug 02, 2023 am 10:09 AM

So verwenden Sie Nginx zum Komprimieren und Dekomprimieren von HTTP-Anfragen. Nginx ist ein leistungsstarker Webserver und Reverse-Proxy-Server, der leistungsstark und flexibel ist. Bei der Verarbeitung von HTTP-Anfragen können Sie die von Nginx bereitgestellten Module gzip und gunzip verwenden, um die Anfragen zu komprimieren und zu dekomprimieren, um die Menge der Datenübertragung zu reduzieren und die Antwortgeschwindigkeit der Anfrage zu verbessern. In diesem Artikel werden die spezifischen Schritte zur Verwendung von Nginx zum Komprimieren und Dekomprimieren von HTTP-Anforderungen vorgestellt und entsprechende Codebeispiele bereitgestellt. Gzip-Modul konfigurieren

Senden Sie eine HTTP-Anfrage und verarbeiten Sie die Antwort mit HttpClient in Java 11 Senden Sie eine HTTP-Anfrage und verarbeiten Sie die Antwort mit HttpClient in Java 11 Aug 01, 2023 am 11:48 AM

Titel: Senden von HTTP-Anfragen und Bearbeiten von Antworten mit HttpClient in Java11 Einführung: In modernen Internetanwendungen ist die HTTP-Kommunikation mit anderen Servern eine sehr häufige Aufgabe. Java bietet einige integrierte Tools, die uns dabei helfen können, dieses Ziel zu erreichen. Das neueste und empfohlene ist die in Java11 eingeführte HttpClient-Klasse. In diesem Artikel wird erläutert, wie Sie HttpClient in Java11 verwenden, um HTTP-Anforderungen zu senden und Antworten zu verarbeiten.

See all articles