PHP에서 Hash_update_stream 함수는 특히 스트림 데이터를 처리 할 때 해시 값을 동적으로 업데이트하는 방법입니다. CURL 과 결합하여 큰 파일 또는 스트리밍 데이터를 다운로드 할 때 해시 값 계산을 실시간으로 인식 할 수 있습니다. 이 기사에서는 Hash_update_stream 과 CURL을 사용하여이를 달성하는 방법을 살펴 봅니다.
Hash_update_stream 함수는 PHP의 내장 해시 함수 중 하나이며, 해시 계산을 점차적으로 업데이트하는 데 사용됩니다. 즉, 많은 양의 데이터 스트림을 처리 할 때 전체 파일을 메모리에로드하지 않고 파일의 해시 값을 점차 계산할 수 있습니다. 구문은 다음과 같습니다.
bool hash_update_stream ( resource $context , resource $stream )
$ 컨텍스트 : hash_init ()를 사용하여 초기화 된 해시 컨텍스트 리소스.
$ stream : 일반적으로 파일 또는 네트워크 스트림을 통해 생성 된 데이터 스트림의 리소스.
CURL은 URL을 통해 다른 네트워크 리소스와 상호 작용할 수있는 강력한 PHP 확장자입니다. CURL을 통해 서버에 요청을 보내고 HTTP, HTTPS, FTP 등과 같은 여러 프로토콜을 지원하는 응답을 수신 할 수 있습니다. 응용 프로그램 시나리오에서 CURL을 사용하여 원격 자원을 다운로드하고 해시 계산을위한 Hash_update_stream 함수로 데이터 스트림을 넘겨 줄 수 있습니다.
이 예에서는 CURL을 사용하여 파일을 동적으로 다운로드하고 해시 _update_stream 함수와 함께 파일의 해시 값을 실시간으로 계산합니다.
먼저 해시 컨텍스트를 초기화해야합니다. SHA256 과 같은 일반적으로 사용되는 해싱 알고리즘을 선택할 수 있습니다.
$hashContext = hash_init('sha256'); // 초기화 sha256 해시 컨텍스트
다음으로 Curl을 사용하여 세션을 초기화하고 해당 옵션을 설정하여 원격 파일의 데이터 스트림을 가져옵니다.
$url = "http://example.com/largefile"; // 다운로드 할 파일 URL
$ch = curl_init($url); // 초기화 curl 세션
// 설정 curl 옵션
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 직접 출력 대신 응답을 반환합니다
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 리디렉션을 지원합니다
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 금지 SSL 인증서 확인(자체 서명 된 인증서에 적합합니다)
// 파일 스트림을 열면 데이터를 얻습니다
$stream = curl_exec($ch);
이제 Hash_update_stream 함수를 사용하여 CURL 에서 얻은 데이터 스트림을 전달하여 실시간 해시 계산을 수행 할 수 있습니다.
if ($stream) {
$fp = fopen('php://memory', 'r+'); // 메모리 스트림을 만듭니다
fwrite($fp, $stream); // 다운로드 된 콘텐츠를 메모리 스트림에 작성하십시오
rewind($fp); // 스트림 포인터를 시작 위치로 반환하십시오
// 사용 hash_update_stream 동적으로 해시 값을 업데이트합니다
hash_update_stream($hashContext, $fp);
fclose($fp); // 스트림을 닫으십시오
}
마지막으로 Hash_Final () 을 통해 최종 해시 값을 얻을 수 있습니다.