Kann
is_file wirklich file_exists ersetzen? Die Antwort ist nein. Warum? Der Grund ist sehr einfach: is_file hat einen Cache
Wir können den folgenden Code verwenden, um ihn zu testen:
Der Code lautet wie folgt:
<?php $filename = 'test.txt'; if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } sleep(10); if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } ?>
in Beim Ausführen des Testcodes stellen wir sicher, dass die Datei test.txt vorhanden ist. Im obigen Code wird zum ersten Mal die Funktion is_file verwendet, um festzustellen, ob die Datei vorhanden ist, und dann wird die Sleep-Funktion aufgerufen, um 10 Sekunden lang zu schlafen. Innerhalb dieser 10 Sekunden löschen wir die test.txt-Datei . Schauen Sie sich abschließend das Ergebnis des zweiten Aufrufs der Funktion is_file an. Das Ausgabeergebnis lautet wie folgt:
test.txt existiert!
test.txt existiert!
Nun, Sie haben richtig gelesen, „test.txt existiert“ zweimal. Der Grund dafür ist, dass is_file über einen Cache verfügt. Wenn die Funktion is_file zum ersten Mal aufgerufen wird, speichert PHP das Attribut (Dateistatus) der Datei . Wenn is_file erneut aufgerufen wird, wird dies der Fall sein, wenn der Dateiname mit dem ersten Mal übereinstimmt direkt zurückgegeben werden.
Was ist mit der Änderung von is_file in file_exists? Wir können die Funktion is_file im obigen Code in die Funktion file_exists ändern und die obige Testmethode erneut zum Testen verwenden. Die Ergebnisse lauten wie folgt:
test.txt existiert!
test.txt existiert nicht!
Wenn file_exists zum zweiten Mal aufgerufen wird, wird zurückgegeben, dass die Datei nicht existiert. Dies liegt daran, dass file_exists Die Funktion wird nicht zwischengespeichert und wird jedes Mal ausgeführt, wenn file_exists aufgerufen wird. Gehen Sie zur Festplatte , um zu suchen, ob die Datei vorhanden ist. Daher wird nur beim zweiten Mal „false“ zurückgegeben.
Is_file kann also nicht anstelle von file_exists verwendet werden
Das obige ist der detaillierte Inhalt vonGründe, warum die Funktion is_file() die Funktion file_exists() nicht ersetzen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!