is_file/file_exists performance and cache

后端 未结 3 1052
野的像风
野的像风 2021-02-09 09:21

I made some tests to compare and measure speed of both functions. is_file seems to be several times faster (I used 10000 iterations for both) than file_

相关标签:
3条回答
  • 2021-02-09 10:05

    When you use stat(), lstat(), or any of the other functions listed in the affected functions list (below), PHP caches the information those functions return in order to provide faster performance. However, in certain cases, you may want to clear the cached information. For instance, if the same file is being checked multiple times within a single script, and that file is in danger of being removed or changed during that script's operation, you may elect to clear the status cache. In these cases, you can use the clearstatcache() function to clear the information that PHP caches about a file.

    Affected functions include stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), and fileperms().

    0 讨论(0)
  • 2021-02-09 10:18

    PHP caches both is_file() and file_exists() in the stat cache. Call clearstatcache() to clear it.

    Edit:
    If anything, the two should take similar amounts of time because they both call the OS's stat() function, but the results of one may be cached for the other by PHP (unless you clearstatcache()) or by the OS as Yuliy mentions below.

    0 讨论(0)
  • 2021-02-09 10:22

    is_file and file_exists are two different function that does two different things; file_exists only check if the file exists, is_file tell if the target is a valid file, and (for example) not a directory.

    They shouldnt be used for the same goal, so the performance comparison cant be done (imho)

    0 讨论(0)
提交回复
热议问题