is_file() 함수가 file_exists() 함수를 대체할 수 없는 이유

怪我咯
풀어 주다: 2023-03-13 14:00:02
원래의
2271명이 탐색했습니다.

file_exists 대신 is_file을 실제로 사용할 수 있나요? 대답은 '아니요'입니다. 왜? 이유는 간단합니다. is_file에는 캐시

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

코드는 다음과 같습니다.

<?php  
      $filename = &#39;test.txt&#39;;
      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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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