코어 포인트
PHP 스트리밍은 파일, 네트워크 및 데이터 압축 작업을 일반화하기위한 강력한 도구입니다. 그들은 읽거나 쓸 수 있으며 스트림의 어느 곳에서나
가 될 수 있습니다. 각 스트림에는 특정 프로토콜 또는 인코딩을 처리하기위한 래퍼가 있습니다.
PHP는 내장 포장지, 프로토콜 및 필터를 제공하며 사용자 정의 포장지, 프로토콜 및 필터의 생성 및 등록을 허용합니다. 기본 래퍼는 - 이며 파일 시스템에 액세스 할 때마다 사용됩니다. 다른 포장지로는 HTTP, Amazon S3, MS Excel, Google Storage, Dropbox 및 Twitter 용 래퍼가 있습니다.
fseek()
스트림 컨텍스트는 래퍼의 동작을 수정하고 향상시킬 수있는 스트림 별 매개 변수 또는 옵션입니다. 간단한 네트워크 작업에서 컬을 사용하는 데 사용될 수 있으며 다른 목적으로 개별적으로 수정하거나 만들 수 있습니다. 스트림은 PAAS 제공 업체 용 가상 파일 시스템 랩퍼를 만드는 데 사용될 수 있으며 사용자 정의 파일 형식 및 인코딩을 구현하는 응용 프로그램 용 사용자 정의 포장지 및 필터를 구축하는 데 사용할 수 있습니다.
-
PHP 스트림은 PHP가 제공하는 리소스이며 우리는 종종 투명하게 사용하지만 매우 강력한 도구 일 수도 있습니다. 우리는 그들의 힘을 활용하는 방법을 배우면 응용 프로그램을 더 높은 수준으로 끌어 올릴 수 있습니다. PHP 매뉴얼은 스트리밍에 대한 좋은 설명을 가지고 있습니다. & gt; 파일, 네트워크, 데이터 압축 및 일반적인 기능 세트와 용도를 공유하는 기타 작업을 일반화하는 방법으로 스트리밍이 소개되었습니다. 간단히 말해서 스트림은 스트림 가능한 동작을 나타내는 자원 객체입니다. 즉, 읽기 또는 선형으로 작성 될 수 있으며 스트림의 어느 곳에서나
file://
를 만들 수 있습니다.
각 스트림에는 특정 프로토콜 또는 인코딩을 처리하는 데 필요한 추가 코드가 포함 된 구현 래퍼가 있습니다. PHP는 사용자 정의 포장지를 쉽게 만들고 등록 할 수있는 내장 포장지를 제공합니다. 컨텍스트와 필터를 사용하여 래퍼의 동작을 수정하거나 향상시킬 수도 있습니다. -
흐름 기본
스트림의 기준 형식은 입니다.
는 래퍼의 이름이며 는 래퍼의 구문에 따라 다릅니다. 기본 래퍼는 fseek()
이므로 파일 시스템에 액세스 할 때마다 스트림을 사용합니다. 예를 들어,
또는 를 작성하고 동일한 결과를 얻을 수 있습니다. 대신
를 사용하면 HTTP 스트림 래퍼를 사용하도록 PHP에 알려줍니다. 앞에서 언급했듯이 PHP는 일부 내장 포장지, 프로토콜 및 필터를 제공합니다. 컴퓨터에 설치된 포장지를 이해하려면 다음을 사용할 수 있습니다.
내 설치 출력은 다음과 같습니다<?php
print_r(stream_get_transports());
print_r(stream_get_wrappers());
print_r(stream_get_filters());
?>
로그인 후 복사
좋은 도구 세트는 아니십니까? 또한 Amazon S3, MS Excel, Google Storage, Dropbox 및 Twitter의 타사 스트림을 작성하거나 사용할 수 있습니다.
<🎜 🎜> <<> php : // 래퍼
<🎜 🎜>
PHP에는 자체 래퍼가있어 언어의 I/O 스트림에 액세스 할 수 있습니다. 기본 , 및 랩퍼는 기본 I/O 리소스를 매핑하며, 게시물 요청의 원래 본문이있는 읽기 전용 스트림이기도합니다. 데이터 페이로드를 게시물 요청 본문 내부에 넣는 원격 서비스를 처리 할 때 매우 편리합니다. 빠른 테스트를 위해 Curl을 사용해 봅시다 :
<<> PHP 스크립트에 대한 응답으로 php://stdin
의 결과는 다음과 같습니다.
php://stdout
첫 번째 패킷은 php://stderr
배열에서 액세스 할 수 없습니다. 그러나 대신 를 사용하면 다음을받을 것입니다.
php://input
PHP 5.1은 임시 데이터를 읽고 쓰기 위해 <🎜 🎜> 및
스트림 포장지를 소개합니다. 이름에서 알 수 있듯이 데이터는 메모리 또는 기본 시스템에서 각각 관리하는 임시 파일에 저장됩니다. 또한 <code>Array
(
[0] => tcp
[1] => udp
[2] => unix
[3] => udg
[4] => ssl
[5] => sslv3
[6] => sslv2
[7] => tls
)
Array
(
[0] => https
[1] => ftps
[2] => compress.zlib
[3] => compress.bzip2
[4] => php
[5] => file
[6] => glob
[7] => data
[8] => http
[9] => ftp
[10] => zip
[11] => phar
)
Array
(
[0] => zlib.*
[1] => bzip2.*
[2] => convert.iconv.*
[3] => string.rot13
[4] => string.toupper
[5] => string.tolower
[6] => string.strip_tags
[7] => convert.*
[8] => consumed
[9] => dechunk
[10] => mcrypt.*
[11] => mdecrypt.*
)</code>
로그인 후 복사
/<🎜 🎜/<🎜 🎜>와 같은 함수를 사용하여 스트림을 열 때 필터를 적용하도록 설계된 메타 래퍼 인 도 있습니다. print_r($_POST)
첫 번째 예제는 필터를 사용하여 디스크에 작성된 데이터를 인코딩하는 반면, 두 번째 예제는 두 개의 계단식 필터를 적용하여 원격 URL에서 데이터를 읽습니다. 결과는 응용 프로그램에서 매우 기본에서 매우 강력한 것까지 다양합니다. curl -d "Hello World" -d "foo=bar&name=John" http://localhost/dev/streams/php_input.php
로그인 후 복사
<🎜 🎜> <<> 흐름 컨텍스트 $_POST
컨텍스트는 래퍼의 동작을 수정하고 향상시킬 수있는 스트림 별 매개 변수 또는 옵션 세트입니다. 일반적인 사용 컨텍스트는 HTTP 래퍼를 수정하는 것입니다. 이를 통해 간단한 네트워크 작업에서 CURL을 사용하지 않을 수 있습니다. readfile('php://input')
먼저, <🎜 🎜> 형식의 배열 인 옵션 배열을 정의합니다 (사용 가능한 컨텍스트 옵션은 특정 래퍼에 따라 다름). 그런 다음 기본 컨텍스트를 반환하고 적용 할 옵션 배열을 수락하는 <🎜 🎜>를 호출합니다. 명령문은 이러한 설정을 사용하여 컨텐츠를 얻습니다. 이 예에서는 컨텐츠가 요청 본문에 전송되므로 원격 스크립트는 Array
(
[foo] => bar
[name] => John
)
로그인 후 복사
를 사용하여 읽습니다. 우리는 를 사용하여 헤더에 액세스하고 다음을 얻을 수 있습니다 : php://memory
php://temp
우리는 기본 컨텍스트 옵션을 수정했지만 단독으로 사용하기위한 대체 컨텍스트를 만들 수도 있습니다. php://filter
readfile()
결론 file_get_contents()
stream_get_contents()
위 내용은 PHP 마스터 | PHP의 스트림 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!