Ich muss überprüfen, ob sich eine Datei an einem bestimmten Speicherort auf der Festplatte befindet ($ path. $ File_name).
Was ist der Unterschied zwischen is_file()
und file_exists()
Funktionen und welche ist besser / schneller in PHP zu verwenden?
is_file()
ist der schnellste, aber der jüngste Benchmark zeigt, dass erfile_exists()
für mich etwas schneller ist. Ich denke, es hängt vom Server ab.Mein Testbenchmark:
Edit: @Tivie danke für den Kommentar. Die Anzahl der Zyklen wurde von 1000 auf 10k geändert. Das Ergebnis ist:
wenn die Datei existiert :
is_file x 10000 1.5651218891144 Sekunden
file_exists x 10000 1.5016479492188 Sekunden
is_readable x 10000 3.7882499694824 Sekunden
wenn die Datei nicht existiert :
is_file x 10000 0,23920488357544 Sekunden
file_exists x 10000 0.22103786468506 Sekunden
is_readable x 10000 0,21929788589478 Sekunden
Bearbeiten: clearstatcache () verschoben; innerhalb der Schleife. Danke CJ Dennis.
quelle
is_file()
schneller gefunden alsfile_exists()
. Wenn Sie wissen, dass es sich um eine Datei (und nicht um ein Verzeichnis) handelt, verwenden Sie sie auf jeden Fall stattdessen.is_dir()
sich herausstellt, dass es 20% schneller ist alsfile_exists()
(was übrigens nicht der Fall ist), kann dies ein wichtiger Unterschied sein, wenn Sie sowieso nur nach Dirs suchen ...Weder.
is_file () kann true zurückgeben, wenn die Datei nicht vorhanden ist.
file_exists () kann true zurückgeben, wenn die Datei ein Verzeichnis ist.
Wenn es also eine Datei sein muss und existieren muss, brauchen Sie beides.
Geschwindigkeit spielt hier keine Rolle, weil sie nicht gleich sind. Verwenden Sie nur eine, wenn nur eine Funktion wichtig ist und diese schneller ist.
quelle
is_file
wäre schneller, wenn es mit Backslash verwendet werden :\is_file
. In diesem Fall bietet PHP eine Opcache-Optimierung undfile_exists
wird dies auch nicht tun .quelle
Ich weiß, dass dieser Beitrag alt ist, aber der Unterschied zwischen diesen Funktionen liegt nicht nur in ihrem Verhalten. Wenn Sie is_file () verwenden, um das Vorhandensein einer großen Datei zu überprüfen, werden mehr als 2 Go ausgeführt. Sie werden überrascht sein. Datei existiert nicht. :( Aber wenn Sie mit file_exists () prüfen, funktioniert das.
quelle