Ich habe einige Tests gemacht, um die Geschwindigkeit beider Funktionen zu vergleichen und zu messen. is_file scheint mehrere Male schneller zu sein (ich habe 10000 Iterationen für beide verwendet) als file_exists . Ich frage mich, ob PHP oder OS einen Cache für diese Funktionen verwenden oder auf HDD zugreifen? Ich denke nein, aber ich frage mich ...
Ich habe diesen Code verwendet:
%Vor%Wenn Sie stat (), lstat () oder eine beliebige Zahl verwenden der anderen Funktionen aufgelistet in der Liste betroffener Funktionen (unten), PHP speichert die Information diese Funktionen zurück, um schneller zu liefern Performance. Jedoch in bestimmten Fälle, möchten Sie möglicherweise die löschen zwischengespeicherte Informationen. Zum Beispiel, wenn Die gleiche Datei wird überprüft mehrere Male in einem einzigen Skript, und diese Datei ist in Gefahr zu sein entfernt oder verändert währenddessen Skript-Operation können Sie wählen Löschen Sie den Status-Cache. In diesen Fälle, können Sie die verwenden clearstatcache () - Funktion zum Löschen der Informationen, die PHP über einen Cache speichert Datei.
Betroffene Funktionen sind stat (), lstat (), file_exists (), is_writable (), is_readable (), is_executable (), is_file (), is_dir (), is_link (), filectime (), Dateizeit (), Dateizeit (), fileinode (), Dateigruppe (), Dateibesitzer (), Dateigröße (), Dateityp () und fileperms ().
PHP speichert sowohl is_file()
als auch file_exists()
im Statistik-Cache zwischen. Rufen Sie clearstatcache()
auf, um es zu löschen.
Bearbeiten:
Wenn überhaupt, sollten die beiden ähnliche Zeit benötigen, da sie beide die Funktion stat()
aufrufen >, aber die Ergebnisse von einem können für den anderen von PHP zwischengespeichert werden (außer Sie clearstatcache()
) oder vom Betriebssystem, wie Yuliy unten erwähnt.
is_file
und file_exists
sind zwei verschiedene Funktionen, die zwei verschiedene Dinge tun; file_exists
prüft nur, ob die Datei existiert, is_file
sagt, ob das Ziel eine gültige Datei ist und (zum Beispiel) kein Verzeichnis.
Sie sollten nicht für dasselbe Ziel verwendet werden, so dass der Leistungsvergleich nicht möglich ist (imho)
Tags und Links php performance