PHP에서 파일 콘텐츠를 읽는 것은 매우 일반적인 작업입니다. md5_file () 함수와 file_get_contents () 함수는 파일 처리의 일반적인 기능이지만 사용 및 성능 차이는 중요합니다. 이 기사는 파일을 읽을 때이 두 기능의 차이점과 장점과 단점을 자세히 분석하고 다른 작업을 완료하기위한 올바른 기능을 선택하는 데 도움이됩니다.
md5_file (String $ filename) : String | false
이 함수는 지정된 파일의 MD5 해시 값을 직접 계산하고 파일의 MD5 다이제스트를 나타내는 32 비트 문자열을 반환합니다. 파일 읽기가 실패하면 False가 반환됩니다.
file_get_contents (string $ filename, bool $ use_include_path = false, resource $ context = null, int $ offset = 0, int $ maxlen = null) : string | false
이 함수는 전체 파일 내용을 문자열로 읽고 반환합니다. 읽기가 실패하면 False가 반환됩니다.
md5_file ()
주된 목적은 파일의 MD5 값을 계산하는 것입니다. 파일의 무결성을 확인하는 데 사용되는 파일의 MD5 값을 계산하고 파일이 변조되었는지 또는 파일의 고유 식별자로 확인하는지 확인하는 것입니다. 파일의 내용을 반환하는 것이 아니라 파일의 내용 요약을 반환합니다.
file_get_contents ()
파일 텍스트 또는 이진 데이터의 후속 처리를 용이하게하기 위해 파일의 모든 내용을 읽는 데 사용됩니다. 반환되는 것은 파일의 전체 데이터 문자열입니다.
md5_file () 의 구현은 일반적으로 파일 컨텐츠를 직접 해시하는 내장 최적화 작업이며 모든 파일을 문자열 처리로 메모리에로드 할 필요는 없으며, 이는 더 효율적이고 메모리 사용량이 적습니다.
file_get_contents ()는 전체 파일 내용을 한 번에 메모리로 읽습니다. 더 큰 파일의 경우 메모리 사용이 더 높아질 수 있습니다. 향후 파일 일관성 만 확인 해야하는 경우 불필요한 폐기물입니다.
장면 | 권장 사용 | 이유 |
---|---|---|
파일의 고유 식별자 또는 체크섬을 계산하십시오 | md5_file () | 파일 MD5, 빠르게 메모리 절약으로 직접 돌아갑니다 |
파일의 특정 콘텐츠를 처리해야합니다 | file_get_contents () | 내용의 작동 또는 구문 분석을 용이하게하려면 파일 내용을 읽으십시오. |
파일이 큰 경우 | md5_file () | 큰 파일을 메모리에 읽지 않고 리소스를 저장하지 마십시오 |
작은 파일 및 전문 처리 | file_get_contents () | 간단하고 빠르며 읽은 후 텍스트 또는 데이터를 직접 작동하는 데 편리합니다. |
<?php
$file = 'http://m66.net/path/to/file.txt';
$md5 = md5_file($file);
if ($md5 === false) {
echo "파일을 읽지 못했습니다";
} else {
echo "더럽히는MD5가치는입니다: " . $md5;
}
?>
<?php
$file = 'http://m66.net/path/to/file.txt';
$content = file_get_contents($file);
if ($content === false) {
echo "파일을 읽지 못했습니다";
} else {
echo "파일 내용은 다음과 같습니다:\n";
echo $content;
}
?>
목표가 파일의 MD5 점검 값을 빠르게 얻는 것이 목표라면 MD5_File ()가 더 효율적이고 메모리 절약하는 더 나은 선택입니다 .
텍스트를 구문 분석, 데이터 수정 등과 같은 파일 콘텐츠에서 추가 작업을 수행 해야하는 경우 File_Get_Contents ()가 전체 컨텐츠를 읽는 데 도움이 될 수 있습니다 .
큰 파일의 경우 File_Get_Contents ()를 사용하여 모든 컨텐츠를 한 번에 직접 읽지 않는 것이 좋습니다. 청크로 읽거나 스트림 작업을 사용하는 것을 고려할 수 있습니다.
이 두 기능의 차이점과 장점과 단점을 이해하면 프로그램 논리를보다 합리적으로 설계하고 프로그램 성능과 안정성을 향상시킬 수 있습니다.