PHP에서 HTTP 응답의 청크 인코딩 구현 방법

WBOY
풀어 주다: 2016-07-29 08:39:16
원래의
1901명이 탐색했습니다.

청크 인코딩 전송에 대한 HTTP 응답은 메시지 헤더에 설정됩니다.
전송 인코딩: 청크
는 콘텐츠 본문이 청크 인코딩을 사용하여 콘텐츠를 전송한다는 의미입니다.
청크 인코딩은 여러 개의 청크를 연결하여 구성되며 길이가 0임을 나타내는 청크로 끝납니다. 각 청크는 헤더와 텍스트의 두 부분으로 나뉩니다. 헤더 내용은 텍스트의 다음 단락의 총 문자 수(16진수)와 수량 단위(일반적으로 작성되지 않음)를 지정합니다. 지정된 길이의 두 부분을 캐리지 리턴 및 줄 바꿈(CRLF)으로 구분합니다. 길이가 0인 마지막 청크의 콘텐츠를 바닥글이라고 하며 이는 추가 헤더 정보입니다(일반적으로 직접 무시할 수 있음). 구체적인 Chunk 인코딩 형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.


Chunked-Body = *chunk
    "0 " CRLF
 footer
 CRLF
청크 = 청크 크기 [ 청크 확장 ] CRLF
청크 데이터 CRLF
hex-no-zero =
청크 크기 = 16진수 없음 *HEX
청크 확장 = *( ";" 청크 확장 이름 [ "=" 청크 확장 값 ] )
청크 -ext-name = 토큰
Chunk-ext-val = 토큰 | 인용 문자열
청크 데이터 = 청크 크기(OCTET)
바닥글 = *엔티티 헤더


RFC 문서 청크 디코딩 프로세스는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.


길이 := 0
청크 크기 읽기, 청크 -ext(있는 경우) 및 CRLF
while (chunk-size > 0) {
청크 데이터 읽기 및 CRLF
청크 데이터를 엔터티 본문에 추가
길이 := 길이 청크 크기
청크 크기 및 CRLF 읽기
}
엔티티 헤더 읽기
while (엔티티 헤더가 비어 있지 않음) {
엔티티 헤더 추가 기존 헤더 필드
read 엔터티 헤더
 }
Content-Length := length
Transfer-Encoding에서 "chunked" 제거


마지막으로 PHP 버전의 청크 디코딩 코드가 제공됩니다:

코드 복사 코드는 다음과 같습니다:


$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 ); // rn 건너뛰기
$chunk_size = ( 정수)hexdec(fgets( $socket_fd, 4096 ) )
}

위 내용은 관련 내용을 포함하여 PHP에서 HTTP 응답의 청크 인코딩 구현 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!