PHP에서 is_file과 file_exists의 차이점, is_file이 file_exits를 대체할 수 없는 이유

WBOY
풀어 주다: 2016-07-28 08:28:22
원래의
1420명이 탐색했습니다.

is_file은 파일이 존재하는지 확인하고 지정된 파일 이름이 일반 파일인지 확인합니다.

file_exists는 파일이나 디렉터리가 있는지 확인합니다.

is_dir은 디렉터리가 있는지 확인합니다.

이 두 함수의 결과는 캐시되지만 is_file이 더 빠릅니다. N 번.

결론은 파일이 실제로 존재하는지 여부에 따라 file_exits 함수가 속도에 영향을 미치지 않지만 is_file의 영향이 더 크다는 것입니다.

첫 번째 질문은 file_exists 대신 is_file을 실제로 사용할 수 있느냐는 것입니다. 대답은 '아니요'입니다. 왜? 이유는 매우 간단합니다. is_file에 캐시가 있습니다


다음 코드를 사용하여 테스트할 수 있습니다.

코드 복사

코드는 다음과 같습니다.

$filename = 'test.txt'; if (is_file($filename)) { echo "$filename이 존재합니다. !n"; } else {

            echo "$filename 존재하지 않습니다!n"; ", . 위 코드에서는 파일이 존재하는지 확인하기 위해 처음으로 is_file 함수를 사용한 후, sleep 함수를 호출하여 10초간 sleep하도록 했습니다. 이 10초 내에 test.txt 파일을 삭제해야 합니다. 마지막으로 is_file 함수를 두 번째 호출한 결과를 살펴보세요. 출력 결과는 다음과 같습니다.

test.txt가 존재합니다!
test.txt가 존재합니다!
글쎄요, "test.txt가 존재합니다!"가 두 번 출력되었습니다. 그 이유는 is_file에 캐시가 있기 때문입니다. is_file 함수가 처음 호출되면 PHP는 파일 속성(파일 상태)을 저장합니다. is_file이 다시 호출되면 파일 이름이 처음과 동일하면 캐시에 직접 반환됩니다.
is_file을 file_exists로 변경하면 어떻게 되나요? 위 코드의 is_file 함수를 file_exists 함수로 변경하고 위의 테스트 방법을 다시 사용하여 테스트할 수 있습니다. 결과는 다음과 같습니다.
test.txt가 존재합니다!
test.txt가 존재하지 않습니다!
file_exists를 두 번째 호출하면 파일이 존재하지 않는다고 반환됩니다. 함수는 캐시되지 않으며 file_exists가 호출될 때마다 발생합니다. 디스크를 검색하여 파일이 존재하는지 확인하므로 두 번째에만 false를 반환합니다.
그렇게 말했지만 file_exists 대신 is_file을 사용할 수 없다는 점만 설명하고 싶습니다. is_file이 더 나은 성능을 주장한다면 제가 할 수 있는 일은 없습니다


위 내용은 PHP에서 is_file과 file_exists의 차이점을 소개합니다. is_file이 file_exits를 대체할 수 없는 이유가 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿