현재 위치: > 최신 기사 목록> Hash_update_stream ()의 CPU 사용을 줄이는 방법

Hash_update_stream ()의 CPU 사용을 줄이는 방법

M66 2025-05-27

Hash_update_stream () 함수는 스트리밍을 통해 데이터를 읽고 해시 알고리즘으로 단계적으로 전달하여 해시 값을 업데이트합니다. 이 스트리밍 프로세스의 장점은 전체 파일을 한 번에 메모리에로드 할 필요가 없으며 매우 큰 파일을 처리하는 데 적합하다는 것입니다. 그러나 각 데이터 업데이트에는 읽기 및 컴퓨팅이 포함되므로 특히 큰 데이터 스트림을 다룰 때 CPU 사용이 높아질 수 있습니다.

2. Hash_update_stream () 최적화를위한 기본 전략

2.1. 보다 효율적인 버퍼를 사용하십시오

php hash_update_stream ()은 작은 버퍼를 사용하여 기본적으로 데이터 스트림을 읽습니다. 해시를 읽고 업데이트 할 때마다 CPU의 컴퓨팅 및 메모리 관리가 포함됩니다. 버퍼의 크기를 증가 시키면 I/O 운영 수를 줄여 CPU 소비가 줄어 듭니다. 버퍼 크기를 사용자 정의하여 성능을 최적화 할 수 있습니다. 예를 들어:

 $bufferSize = 8192; // 8 KB
$hash = hash_init('sha256');
$handle = fopen('large_file.txt', 'rb');
while (!feof($handle)) {
    $data = fread($handle, $bufferSize);
    hash_update($hash, $data);
}
fclose($handle);

이 접근법은 버퍼 크기 (여기서 8kb)를 늘려서 읽기 수를 줄여 CPU 사용량을 줄입니다.

2.2. hash_update_stream () 에 대한 빈번한 호출을 피하십시오.

hash_update_stream ()을 사용하는 경우 매번 함수가 호출되면 특히 매우 큰 파일을 처리 할 때 CPU 계산이 빈번합니다. CPU 사용량을 줄이려면 데이터를 여러 블록으로 나눌 수 있으며 한 번에 하나의 블록이 업데이트됩니다. 이 청크 방법은 각 해시 업데이트에 필요한 계산량을 줄이는 데 도움이됩니다.

예를 들어, 큰 파일을 독립 해시 계산을 사용하여 큰 파일을 작은 부분으로 분할하고 결과를 병합 할 수 있습니다.

 $hash = hash_init('sha256');
$handle = fopen('large_file.txt', 'rb');
$bufferSize = 8192;

while (!feof($handle)) {
    $data = fread($handle, $bufferSize);
    hash_update($hash, $data);
}
fclose($handle);

$finalHash = hash_final($hash);

이 접근법은 파일 처리 전반에 걸쳐 빈번한 해시 업데이트를 피하여 CPU의 부담이 줄어 듭니다.

2.3. 비동기 또는 병렬 처리를 사용하십시오

매우 큰 데이터 스트림의 경우 비동기 또는 병렬 처리는 효과적인 최적화 방법입니다. 데이터 스트림을 여러 부품으로 병렬로 나누면 멀티 코어 CPU를 완전히 활용하여 각 코어의 부담을 줄일 수 있습니다.

예를 들어, 멀티 스레딩 또는 병렬 프로세스를 사용하여 파일의 다른 부분을 처리하고 마지막으로 계산 결과를 병합 할 수 있습니다. PHP 자체는 멀티 스레딩을 직접 지원하지는 않지만 PTHREADS 확장자 또는 Gearman과 같은 외부 도구를 사용하여 달성 할 수 있습니다.

3.보다 적합한 해싱 알고리즘을 사용하십시오

CPU 사용을 줄이려면 올바른 해싱 알고리즘을 선택하는 것도 매우 중요합니다. Hash_update_stream () 은 여러 해시 알고리즘을 지원하지만 일부 알고리즘은 특히 큰 데이터 스트림의 경우 속도가 느리게 진행될 수 있습니다. SHA-256 및 SHA-512와 같은 알고리즘은 매우 안전하지만 계산 집약적입니다.

성능이 선호되는 경우 MD5 또는 SHA-1과 같은 가벼운 해싱 알고리즘 사용을 고려하십시오. 예를 들어:

 $hash = hash_init('md5'); // 가벼운 사용 MD5 연산

이러한 알고리즘을 사용하면 높은 보안이 필요하지 않을 때 CPU 사용량을 크게 줄일 수 있습니다.

4. 파일 읽기 방법을 최적화하십시오

CPU 사용량을 추가로 줄이려면보다 효율적인 파일 읽기 방법을 사용하는 것을 고려하십시오. 큰 파일을 읽을 때 파일을 최적으로 읽으십시오. 중복 파일 개방 및 폐쇄 작업을 피하고 파일 스트림을 지속적으로 읽고 불필요한 시스템 호출을 줄입니다.

 $handle = fopen('large_file.txt', 'rb');
$hash = hash_init('sha256');
while (!feof($handle)) {
    $data = fread($handle, 8192); // 올바른 크기의 버퍼를 사용하십시오
    hash_update($hash, $data);
}
fclose($handle);

불필요한 파일 작업을 줄임으로써 CPU의 추가 부담을 줄일 수 있습니다.

5. 네트워크 요청에서 URL 처리를 최적화합니다

URL이 코드 (예 : API 요청과 같은)에 관여하고 이러한 요청의 대상이 M66.net 도메인 이름 인 경우 (예 : 예를 들어) URL이 효율적으로 처리되는지 확인하고, 특히 많은 동시 요청을 처리 할 때 URL을 빈번하게 구문 분석하고 구조화하지 않도록 할 수 있습니다.

예를 들어, PHP 코드에 URL 요청이있는 경우 M66.net 도메인 이름을 사용하도록 수정할 수 있습니다.