Muszę sprawdzić, czy plik znajduje się na dysku twardym w określonej lokalizacji ($ path. $ File_name).
Który jest różnicą pomiędzy is_file()
i file_exists()
funkcji i co jest lepsze / szybsze do użytku w PHP?
is_file()
zwróci, false
jeśli podana ścieżka wskazuje na katalog. file_exists()
zwróci, true
jeśli podana ścieżka wskazuje na prawidłowy plik lub katalog. Więc to zależy całkowicie od twoich potrzeb. Jeśli chcesz wiedzieć konkretnie , czy jest to plik lub nie, użyj is_file()
. W przeciwnym razie użyj file_exists()
.
is_file()
jest najszybszy, ale ostatnie testy porównawcze pokazują, żefile_exists()
jest dla mnie nieco szybszy. Więc myślę, że to zależy od serwera.Mój test porównawczy:
Edycja: @Tivie dzięki za komentarz. Zmieniono liczbę cykli z 1000 na 10k. Wynik to:
kiedy plik istnieje :
is_file x 10000 1,5651218891144 sekund
file_exists x 10000 1,5016479492188 sekund
is_readable x 10000 3,7882499694824 sekundy
gdy plik nie istnieje :
is_file x 10000 0,23920488357544 sekund
file_exists x 10000 0,22103786468506 sekund
is_readable x 10000 0,21929788589478 sekund
Edycja: przeniesiono clearstatcache (); wewnątrz pętli. Dzięki CJ Dennis.
źródło
is_file()
szybciej niżfile_exists()
. Jeśli wiesz, że to plik (a nie katalog), zdecydowanie użyj go zamiast tego.is_dir()
okaże się, że jest 20% szybszy niżfile_exists()
(a przy okazji nie jest), może to być istotna różnica, jeśli i tak sprawdzasz tylkoAni.
is_file () może zwrócić prawdę, jeśli plik nie istnieje.
file_exists () może zwrócić prawdę, jeśli plik jest katalogiem.
Więc jeśli musi to być plik i musi istnieć, potrzebujesz obu.
Szybkość nie ma tutaj znaczenia, ponieważ nie są takie same. Użyj tylko jednej, jeśli tylko jedna funkcja ma znaczenie, a będzie szybsza.
źródło
Wiem, że ten post jest stary, ale różnica między tymi funkcjami to nie tylko ich zachowanie. Jeśli używasz is_file () do sprawdzenia istnienia dużego pliku, więcej niż 2 Go. Będziesz zaskoczony. Plik nie istnieje. :( Ale jeśli sprawdzisz za pomocą file_exists (), to działa.
źródło
is_file
jeśli używać go z backslash będzie szybciej:\is_file
. W tym przypadku PHP zapewni optymalizację opcache anifile_exists
nie.źródło