현재 위치: > 최신 기사 목록> fseek () 및 hash_update_stream ()과 함께 특정 범위 내용을 읽는 방법

fseek () 및 hash_update_stream ()과 함께 특정 범위 내용을 읽는 방법

M66 2025-05-27

php에서 fseek ()hash_update_stream ()은 파일 및 해시 계산을 처리하는 데 중요한 도구입니다. fseek () 는 특정 위치로 파일 포인터를 찾는 데 사용되는 반면 Hash_update_stream ()을 사용하여 해시 값을 업데이트 할 수 있습니다. 파일의 특정 부분 만 읽고 수행하려면이 두 기능의 조합이 매우 유용합니다. 이 기사는이 두 기능을 사용하여 파일의 일부만 읽고 해시하는 방법에 대해 자세히 설명합니다.

1. 요구 사항 분석

파일이 큰 파일이 있고 데이터를 해시해야한다고 가정 해 봅시다. 예를 들어, 파일의 처음 1000 바이트 또는 파일의 블록입니다. 전체 파일을 직접 읽는 것은 분명히 효율적이지 않으며 fseek ()hash_update_stream () 의 조합을 사용하면 파일의 특정 부분을 효율적으로 얻고 해시 할 수 있습니다.

2. fseek () 의 ​​역할

fseek () 함수는 파일 포인터의 위치를 ​​설정하는 데 사용됩니다. fseek ()를 사용하면 파일의 시작 부분이나 다른 위치에서 몇 바이트 수를 지정할 수 있습니다. 예를 들어, FSEEK ($ file, 1000)는 파일 포인터를 파일의 1000 번째 바이트로 이동합니다.

3. hash_update_stream () 의 역할

Hash_update_stream ()은 계산을 위해 데이터 스트림을 HASH 함수로 전달하는 데 사용됩니다. 파일을 처리 할 때 hash_update_stream ()은 파일 핸들을 수신하고 스트림에서 해시 값을 업데이트 할 수 있습니다. 예를 들어 Hash_update_stream ($ context, $ 파일)은 전체 파일을 읽고 해시 값을 업데이트 할 수 있습니다.

4. fseek ()hash_update_stream () 과 함께 사용합니다.

먼저 fseek ()를 사용하여 파일 포인터의 위치를 ​​찾은 다음 해당 위치에서 hash_update_stream () 및 해시를 통해 파일의 일부를 읽기 시작해야합니다. 이렇게하면 전체 파일을 읽지 않고 파일을 해시 할 수 있습니다.

5. 코드 구현

1 단계 : 파일을 엽니 다

먼저 파일을 열고 읽을 준비를해야합니다.

 <?php
$file = fopen('example.txt', 'rb'); // 이진 모드에서 파일을 읽습니다
if (!$file) {
    die("파일을 열 수 없습니다!");
}
?>

2 단계 : fseek ()을 사용하여 파일 포인터를 찾습니다

파일의 바이트 1000에서 읽어야한다고 가정하면 fseek ()를 사용하여 찾을 수 있습니다.

 // 파일 포인터를1000바이트
fseek($file, 1000);

3 단계 : hash_update_stream ()을 사용하여 해시 계산

Hash_update_stream ()을 사용하여 파일의 현재 위치에서 시작하는 컨텐츠의 해시 값을 계산할 수 있습니다. SHA256 알고리즘을 사용한다고 가정하십시오.

 // 해시 컨텍스트를 만듭니다
$context = hash_init('sha256');

// 현재 포인터 위치에서 시작하는 파일 부분의 해시 계산
hash_update_stream($context, $file);

// 해시 가치를 얻으십시오
$hash = hash_final($context);

echo "파일 부분의 해시 값: " . $hash;
?>

4 단계 : 파일을 닫습니다

마지막으로 파일을 닫는 것을 잊지 마십시오.

 fclose($file);

6. 요약

fseek ()hash_update_stream ()을 결합하여 파일의 특정 부분을 효율적으로 읽고 해시 할 수 있습니다. 이 방법은 특히 큰 파일을 처리하는 데 적합하므로 전체 파일을 메모리에로드하지 않아 메모리 리소스를 저장할 수 있습니다.

이 접근법의 유연성은 파일의 어느 곳에서나 읽을뿐만 아니라 파일의 특정 영역을 처리하기에도 적합하여보다 세분화 된 제어를 가능하게합니다.

이 기사에서 fseek ()hash_update_stream ()을 파일의 특정 부분에 결합하는 방법을 이해하는 데 도움이되기를 바랍니다. 다른 질문이 있거나 복잡한 요구가 있으시면 언제든지 질문하십시오.