After reading this article about the difference between file_exists and is_file, is_dir in PHP, I basically understand that PHP's file_exists = is_dir + is_file.
Write a program to verify:
Execute 1000 times each and record the time required.
File exists (current directory)
is_file:0.4570ms
file_exists:2.0640ms
File exists (absolute path level 3/www/hx/a/)
is_file:0.4909ms
file_exists:3.3500ms
File exists (absolute path level 5/www/hx/a/b/c/)
is_file:0.4961ms
file_exists:4.2100ms
The file does not exist (current directory)
is_file:2.0170ms
file_exists:1.9848ms
The file does not exist (absolute path level 5/www/hx/a/b/ c/)
is_file:4.1909ms
file_exists:4.1502ms
Directory exists
file_exists:2.9271ms
is_dir:0.4601ms
Directory does not exist
file_exists: 2.9719ms
is_dir:2.9359ms
is_file($file)
file_exists($file)
When $file is a directory, is_file returns false and file_exists returns true
When the file exists, is_file is much faster than file_exists;
The deeper the directory where the file is to be detected, the greater the speed difference, but it is at least 4 times faster.
When the file does not exist, is_file is a little slower than file_exists, but it can be ignored.
When the directory exists, is_dir is much faster than file_exists;
When the directory does not exist, is_dir is a little slower than file_exists, but it can be ignored.
Conclusion:
If you want to determine whether the file exists, use the function is_file(),
If you want to determine whether the directory exists, use the function is_dir(),
There seems to be no place to use file_exists. Is it used when you are not sure whether the parameter passed in is a file or a directory?