file_exists 대신 is_file을 실제로 사용할 수 있나요? 대답은 '아니요'입니다. 왜? 이유는 간단합니다. is_file에는 캐시
가 있습니다. 다음 코드를 사용하여 테스트할 수 있습니다.
코드는 다음과 같습니다.
<?php $filename = 'test.txt'; if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } sleep(10); if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } ?>
테스트 코드를 실행할 때 test.txt 파일이 존재하는지 확인합니다. 위 코드에서는 파일이 존재하는지 확인하기 위해 처음으로 is_filefunction을 사용한 후 sleep 함수를 호출하여 10초 동안 sleep합니다. 이 10초 안에 test.txt 파일이 삭제됩니다. 마지막으로 is_file 함수를 두 번째 호출한 결과를 살펴보세요. 출력 결과는 다음과 같습니다.
test.txt가 존재합니다!
test.txt가 존재합니다!
글쎄요, "test.txt가 존재합니다!"가 두 번 출력되었습니다. 그 이유는 is_file에 캐시가 있기 때문입니다. is_file 함수가 처음 호출되면 PHP는 파일의 속성(file stat)을 저장합니다. is_file이 다시 호출될 때 파일 이름이 처음과 동일하면 캐시에 직접 반환됩니다. . is_file을 file_exists로 변경하면 어떻게 되나요? 위 코드의 is_file 함수를 file_exists 함수로 변경하고 위의 테스트 방법을 다시 사용하여 테스트할 수 있습니다. test.txt가 존재합니다!
test.txt가 존재하지 않습니다!
두 번째로 file_exists를 호출하면 파일이 존재하지 않는다고 반환됩니다. 이는 호출할 때마다 file_exists 함수가 캐시되지 않기 때문입니다. file_exists, 디스크
에서 파일이 존재하는지 검색하므로 두 번째에만 false를 반환합니다.
그래서 file_exists 대신 is_file을 사용할 수 없습니다
위 내용은 is_file() 함수가 file_exists() 함수를 대체할 수 없는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!