Heim Backend-Entwicklung PHP-Tutorial php下HTTP Response中的Chunked编码实现方法

php下HTTP Response中的Chunked编码实现方法

Jul 29, 2016 am 08:39 AM
header size

进行Chunked编码传输的HTTP Response会在消息头部设置:
Transfer-Encoding: chunked
表示Content Body将用Chunked编码传输内容。
Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。具体的Chunk编码格式如下:

复制代码 代码如下:


  Chunked-Body = *chunk
         "0" CRLF
         footer
         CRLF
  chunk = chunk-size [ chunk-ext ] CRLF
       chunk-data CRLF
  hex-no-zero =
  chunk-size = hex-no-zero *HEX
  chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )
  chunk-ext-name = token
  chunk-ext-val = token | quoted-string
  chunk-data = chunk-size(OCTET)
  footer = *entity-header


RFC文档中的Chunked解码过程如下:

复制代码 代码如下:


  length := 0
  read chunk-size, chunk-ext (if any) and CRLF
  while (chunk-size > 0) {
  read chunk-data and CRLF
  append chunk-data to entity-body
  length := length + chunk-size
  read chunk-size and CRLF
  }
  read entity-header
  while (entity-header not empty) {
  append entity-header to existing header fields
  read entity-header
  }
  Content-Length := length
  Remove "chunked" from Transfer-Encoding


最后提供一段PHP版本的chunked解码代码:

复制代码 代码如下:


$chunk_size = (integer)hexdec(fgets( $socket_fd, 4096 ) );
while(!feof($socket_fd) && $chunk_size > 0) {
$bodyContent .= fread( $socket_fd, $chunk_size );
fread( $socket_fd, 2 ); // skip \r\n
$chunk_size = (integer)hexdec(fgets( $socket_fd, 4096 ) );
}

以上就介绍了 php下HTTP Response中的Chunked编码实现方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Jul 24, 2023 am 08:36 AM

Verwenden Sie die File.length()-Funktion von Java, um die Größe einer Datei zu ermitteln. Die Dateigröße ist eine sehr häufige Anforderung beim Umgang mit Dateioperationen. Java bietet eine sehr praktische Möglichkeit, die Größe einer Datei zu ermitteln, d. h. mithilfe der Länge(. )-Methode der File-Klasse. In diesem Artikel wird erläutert, wie Sie mit dieser Methode die Größe einer Datei ermitteln und entsprechende Codebeispiele angeben. Zuerst müssen wir ein File-Objekt erstellen, um die Datei darzustellen, deren Größe wir ermitteln möchten. So erstellen Sie ein File-Objekt: Filef

Was bedeutet Linux-Header? Was bedeutet Linux-Header? Jul 18, 2023 pm 03:34 PM

Der Header von Linux bezieht sich auf den Anfang einer Datei oder eines Datenstroms, der Metadaten über den Inhalt enthält. Durch korrektes Schreiben und Verwenden der Header-Datei können Entwickler Systemressourcen besser nutzen und die Lesbarkeit und Lesbarkeit des Codes verbessern. Wartbarkeit.

Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? May 16, 2023 pm 08:38 PM

[SpringBoot] Übergeben von Parametern im Header durch Feign-Aufrufe So übergeben Sie Header-Parameter durch Feign Problembeschreibung Wenn wir Feign verwenden, um die API-Schnittstelle eines anderen Dienstes in Spring Cloud anzufordern, müssen die Parameter im Header übergeben werden. Wenn nein Wenn eine spezielle Verarbeitung durchgeführt wird, gehen die Parameter im Header verloren. Lösung 1: Übergeben Sie es über @RequestHeader(name="headerName"). Beispiel: Feign ist wie folgt definiert: @FeignClient(name="service-name")pub

Was ist der Unterschied zwischen HTML5-Tag-Head und Header? Was ist der Unterschied zwischen HTML5-Tag-Head und Header? Jan 17, 2022 am 11:10 AM

Unterschiede: 1. Das Head-Tag wird verwendet, um den Kopf des Dokuments zu definieren, der ein Container für alle Head-Elemente ist, und das Header-Tag wird verwendet, um den Header (Einleitungsinformationen) des Dokuments zu definieren. 2. Alle Browser unterstützen das Head-Tag und ältere Versionen von Browsern Keiner der Browser unterstützt das Header-Tag und Browser wie IE9+ und höher müssen das Header-Tag unterstützen.

So verwenden Sie die PHP-Header()-Methode zum Anpassen von Webseiten So verwenden Sie die PHP-Header()-Methode zum Anpassen von Webseiten Mar 28, 2023 pm 01:54 PM

PHP ist eine leistungsstarke Programmiersprache, mit der dynamische Websites und Webanwendungen erstellt werden können. Eine der leistungsstärksten Funktionen ist die header()-Methode von PHP. In diesem Artikel erfahren Sie, wie Sie die header()-Methode von PHP zum Anpassen von Webseiten verwenden.

So springen Sie in den PHP-Header So springen Sie in den PHP-Header Dec 02, 2022 am 09:14 AM

So implementieren Sie einen Sprung im PHP-Header: 1. Verwenden Sie die Syntax „Header(“Location:$url“);“ "]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');".

Wie Nginx über die Kennung im Header verteilt Wie Nginx über die Kennung im Header verteilt May 11, 2023 pm 04:01 PM

Nginx kann Anfragen basierend auf benutzerdefinierten Kennungen in den Anfrageheadern an verschiedene Server verteilen. Konkret können Sie die Map-Direktive verwenden, um den benutzerdefinierten Bezeichner im Anforderungsheader einer anderen Back-End-Serveradresse zuzuordnen, und dann die Proxy_pass-Direktive verwenden, um die Anforderung an den entsprechenden Back-End-Server weiterzuleiten. Das Folgende ist eine Beispielkonfigurationsdatei: http{map$http_my_header$backend{defaultbackend1.example.com;value1backend2.example.com;value2backend3.example.com;}upstreambackend1{serv

Vollständige Liste der PHP-Datei-Download-Funktionen: Analyse von Datei-Download-Beispielen für Readfile, Header, Content-Disposition und andere Funktionen Vollständige Liste der PHP-Datei-Download-Funktionen: Analyse von Datei-Download-Beispielen für Readfile, Header, Content-Disposition und andere Funktionen Nov 18, 2023 pm 03:26 PM

Vollständige Liste der PHP-Datei-Download-Funktionen: Datei-Download-Beispielanalyse von Readfile, Header, Content-Disposition und anderen Funktionen. Der Datei-Download ist eine der wesentlichen Funktionen in Webanwendungen, und PHP als weit verbreitete Web-Entwicklungssprache bietet viele A Funktion und Methode zum Implementieren des Datei-Downloads. In diesem Artikel werden häufig verwendete Datei-Download-Funktionen in PHP vorgestellt, einschließlich Readfile, Header und Content-Dispo

See all articles