hash_update_stream ()은 데이터 스트림을 해시하는 데 사용되는 PHP의 함수입니다. 이 함수는 PHP의 해시 확장의 일부이며, 이는 많은 양의 데이터를 해시 할 때보다 효율적인 방법을 계산할 수있는 방법을 제공합니다. 이 기능은 일반적으로 한 번에 전체 데이터를 읽지 않고 해시 값을 단계별로 업데이트 해야하는 시나리오에서 사용됩니다.
hash_update_stream () 함수는 데이터 스트림을 처리하여 해시 값을 점차 업데이트합니다. 데이터를 블록으로 블록으로 읽고 모든 데이터를 메모리에로드하지 않고 해시를 업데이트 할 수 있으므로 큰 파일을 처리하거나 네트워크 스트림에서 데이터를 얻는 데 매우 효과적입니다. 이 기능은 일반적으로 해시 계산 프로세스를 완료하기 위해 hash_init () 및 hash_final () 과 함께 사용됩니다.
bool hash_update_stream ( resource $context , resource $stream [, int $length ] )
$ 컨텍스트 : 해시 컨텍스트 리소스가 hash_init () 함수에 의해 초기화 된 것입니다.
$ stream : 데이터를 읽는 스트림 리소스는 파일 스트림, 네트워크 스트림 등이 될 수 있습니다.
$ 길이 : 선택적 매개 변수, 읽을 바이트 수를 지정합니다.
Hash_update_stream () 함수는 여러 유형의 리소스를 처리하는 데 사용될 수 있습니다. 다음은이 기능에서 지원하는 리소스 유형입니다.
파일 흐름 리소스
이것은 가장 일반적인 리소스 유형이며 파일 읽기 작업에 적합합니다. fopen () 또는 file_get_contents () 와 같은 함수를 통해 파일 스트림을 열고 Hash_update_stream () 함수로 전달할 수 있습니다. 이런 식으로 함수는 점차 파일 내용을 읽고 해시 값을 업데이트합니다.
샘플 코드 :
$file = fopen('http://m66.net/somefile.txt', 'r'); // 파일 스트림을 엽니 다
$hash_context = hash_init('sha256'); // 해시 컨텍스트를 초기화합니다
hash_update_stream($hash_context, $file); // 해시 업데이트
fclose($file); // 파일 스트림을 닫습니다
네트워크 흐름 리소스
Hash_update_stream () 은 네트워크 리소스 스트림에서 해시 값을 업데이트하는 것을 지원합니다. 이 리소스 유형은 fopen () 함수를 통해 네트워크 연결을 열 수 있습니다. 예를 들어 HTTP 스트림을 열고 데이터를 단계별로 읽을 수 있습니다.
샘플 코드 :
$url = 'http://m66.net/somefile.txt';
$stream = fopen($url, 'r'); // 열려 있는URL흐름
$context = hash_init('sha256'); // 해시 컨텍스트를 초기화합니다
hash_update_stream($context, $stream); // 逐步해시 업데이트值
fclose($stream); // 关闭흐름
표준 입력 스트림
명령 줄에서 PHP는 표준 입력 스트림을 처리 할 수 있습니다. Hash_update_stream ()은 또한 표준 입력 스트림 (예 : php : // stdin 을 통해 얻은 스트림)에 대한 해시 업데이트를 지원합니다.
샘플 코드 :
$stdin = fopen('php://stdin', 'r'); // 열려 있는标准输入흐름
$context = hash_init('sha256'); // 해시 컨텍스트를 초기화합니다
hash_update_stream($context, $stdin); // 逐步해시 업데이트值
fclose($stdin); // 关闭标准输入흐름
메모리 스트림 (php : // temp 또는 php : // memory를 통해)
PHP의 메모리 스트리밍 리소스 (예 : php : // temp 또는 php : // memory를 통해)를 사용할 수도 있습니다. 이 스트림은 임시 데이터를 저장할 수 있으며 중소형 데이터를 처리하는 데 이상적입니다.
샘플 코드 :
$memory_stream = fopen('php://temp', 'r+'); // 열려 있는内存흐름
fwrite($memory_stream, 'Hello, this is a test string.');
rewind($memory_stream); // 重置흐름指针到开始位置
$context = hash_init('sha256'); // 해시 컨텍스트를 초기화합니다
hash_update_stream($context, $memory_stream); // 逐步해시 업데이트值
fclose($memory_stream); // 关闭内存흐름
Hash_update_stream () 함수는 파일 스트림, 네트워크 스트림, 표준 입력 스트림 및 메모리 스트림을 포함한 다양한 유형의 스트림 리소스를 처리 할 수 있습니다. 디스크에서 파일을 읽거나 네트워크에서 데이터 가져 오거나 메모리에서 임시 데이터를 처리하든이 기능을 사용하여 해시 값을 점차 업데이트 할 수 있습니다. 따라서 큰 파일을 처리하거나 데이터 스트림을 실시간으로 얻을 때 매우 효율적이고 효율적입니다.