Мне нужно проверить, находится ли файл на жестком диске в указанном месте ($ path. $ File_name).
Какая разница между is_file()
и file_exists()
функциями и которые лучше / быстрее использовать в PHP?
is_file()
вернется, false
если данный путь указывает на каталог. file_exists()
вернется, true
если указанный путь указывает на допустимый файл или каталог. Так что это будет полностью зависеть от ваших потребностей. Если вы хотите знать , в частности , если это файл или нет, использование is_file()
. В противном случае используйте file_exists()
.
is_file()
это самый быстрый, но недавний тест показал, чтоfile_exists()
он немного быстрее для меня. Думаю, это зависит от сервера.Мой тестовый тест:
Изменить: @Tivie спасибо за комментарий. Количество циклов изменено с 1000 до 10к. Результат:
когда файл существует :
is_file x 10000 1.5651218891144 секунды
file_exists x 10000 1.5016479492188 секунд
is_readable x 10000 3,7882499694824 секунды
когда файл не существует :
is_file x 10000 0,23920488357544 секунды
file_exists x 10000 0,22103786468506 секунд
is_readable x 10000 0,21929788589478 секунд
Изменить: переместили clearstatcache (); внутри петли. Спасибо CJ Dennis.
источник
is_file()
быстрее чемfile_exists()
. Если вы знаете, что это файл (а не каталог), определенно используйте его.is_dir()
окажется, что он на 20% быстрее, чемfile_exists()
(а это не так, кстати), это может быть важной разницей, если вы все равно проверяете только каталоги ...Ни.
is_file () может вернуть истину, если файл не существует.
file_exists () может вернуть true, если файл является каталогом.
Так что, если это должен быть файл и он должен существовать, вам понадобятся оба.
Скорость здесь не имеет значения, потому что они разные. Используйте только одну, если важна только одна функция, и она будет быстрее.
источник
Я знаю, что этот пост старый, но разница между этими функциями не только в их поведении. Если вы используете is_file () для проверки существования большого файла, более 2 Go. Вы будете удивлены. Файл не существует. :( Но если вы проверите с помощью file_exists (), это работает.
источник
is_file
будет быстрее , если использовать его с обратной косой черты:\is_file
. В этом случае PHP не будет обеспечивать оптимизацию opcache и неfile_exists
будет.источник