Heim  >  Artikel  >  Backend-Entwicklung  >  Gründe, warum die Funktion is_file() die Funktion file_exists() nicht ersetzen kann

Gründe, warum die Funktion is_file() die Funktion file_exists() nicht ersetzen kann

怪我咯
怪我咯Original
2017-07-11 10:52:462252Durchsuche

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 = &#39;test.txt&#39;;
      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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn