is_file или file_exists в PHP

Мне нужно проверить, находится ли файл на жестком диске в указанном месте ($ path. $ File_name).

В чем разница между is_file() и file_exists() и которые лучше / быстрее использовать в PHP?

is_file() возвращает false если данный путь указывает на каталог. file_exists() вернет true если данный путь указывает на действительный файл или каталог. Таким образом, это будет полностью зависеть от ваших потребностей. Если вы хотите точно знать, является ли это файлом или нет, используйте is_file() . В противном случае используйте file_exists() .

is_file() является самым быстрым, но недавний тест показывает, что file_exists() для меня немного быстрее. Поэтому я думаю, это зависит от сервера.

Мой тестовый тест:

 benchmark('is_file'); benchmark('file_exists'); benchmark('is_readable'); function benchmark($funcName) { $numCycles = 10000; $time_start = microtime(true); for ($i = 0; $i < $numCycles; $i++) { clearstatcache(); $funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__ } $time_end = microtime(true); $time = $time_end - $time_start; echo "$funcName x $numCycles $time seconds <br>\n"; } 

Редактировать: @Tivie спасибо за комментарий. Изменено количество циклов от 1000 до 10k. Результат:

  1. когда файл существует :

    is_file x 10000 1.5651218891144 секунды

    file_exists x 10000 1.5016479492188 секунд

    is_readable x 10000 3.7882499694824 секунды

  2. когда файл не существует :

    is_file x 10000 0.23920488357544 секунды

    file_exists x 10000 0.22103786468506 секунд

    is_readable x 10000 0.21929788589478 секунд

Изменить: перемещено clearstatcache (); внутри цикла. Спасибо CJ Деннис.