지정된 위치 ($ path. $ file_name)의 HDD에 파일이 있는지 확인해야합니다.
is_file()
와 file_exists()
함수 의 차이점은 무엇이며 PHP에서 사용하는 것이 더 좋고 / 빠릅니다.
지정된 위치 ($ path. $ file_name)의 HDD에 파일이 있는지 확인해야합니다.
is_file()
와 file_exists()
함수 의 차이점은 무엇이며 PHP에서 사용하는 것이 더 좋고 / 빠릅니다.
답변:
is_file()
false
주어진 경로가 디렉토리를 가리키는 경우 반환 됩니다. 주어진 경로가 유효한 파일 이나 디렉토리를 가리키는 경우 file_exists()
반환 true
됩니다 . 따라서 그것은 전적으로 귀하의 필요에 달려 있습니다. 파일인지 여부를 구체적 으로 알고 싶다면 . 그렇지 않으면 .is_file()
file_exists()
is_file()
가장 빠르지 만 최근 벤치 마크에 따르면 file_exists()
약간 더 빠릅니다. 그래서 나는 그것이 서버에 달려 있다고 생각합니다.
내 테스트 벤치 마크 :
benchmark('is_file');
benchmark('file_exists');
benchmark('is_readable');
function benchmark($funcName) {
$numCycles = 10000;
$time_start = microtime(true);
for ($i = 0; $i < $numCycles; $i++) {
clearstatcache();
$funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "$funcName x $numCycles $time seconds <br>\n";
}
편집 : @Tivie 코멘트에 감사드립니다. 사이클 수를 1000에서 10k로 변경했습니다. 결과는 다음과 같습니다.
파일 이있는 경우 :
is_file x 10000 1.5651218891144 초
file_exists x 10000 1.5016479492188 초
is_Readable x 10000 3.7882499694824 초
파일 이없는 경우 :
is_file x 10000 0.23920488357544 초
file_exists x 10000 0.22103786468506 초
is_Readable x 10000 0.21929788589478 초
편집 : 이동 clearstatcache (); 루프 내부. 감사합니다 CJ Dennis.
is_file()
보다 빨리 찾았 습니다 file_exists()
. 파일 (디렉토리가 아님)이라는 것을 알고 있다면 반드시 대신 사용하십시오.
is_dir()
턴 아웃하는 것이보다 빠른 20 %로 file_exists()
만 어쨌든 DIRS 확인하는 경우 (그렇지, BTW 않음), 그 ... 중요한 차이가 될 수 있습니다
이 게시물이 오래되었다는 것을 알고 있지만이 기능의 차이점은 행동 뿐만이 아닙니다. is_file ()을 사용하여 큰 파일의 유무를 확인하면 2 개 이상의 Go. 당신은 놀랄 것입니다. 파일이 없습니다. :(하지만 file_exists ()로 확인하면 작동합니다.