6 Stimmen

Verwendet include() den Cache von file_exists()?

Die Frage ist ziemlich einfach: Wenn es darum geht, die Datei zu berühren, sind diese beiden Beispiele gleich oder berührt Szenario #2 die Datei zweimal?

Szenario #1

include '/pfad/zur/datei.php';

Szenario #2

if (file_exists('/pfad/zur/datei.php'))
    include '/pfad/zur/datei.php';

Ich weiß, dass Szenario #1 die Datei einmal berührt. Wenn ich es richtig verstehe, speichert file_exists() den Pfad und ob die Datei existiert im Cache. Um diesen Cache zu leeren, musst du clearstatcache() aufrufen.

Aber benutzt include auch diesen Cache? Oder ist er ausschließlich für file_exists() bestimmt?

5voto

hakre Punkte 184133

Nur eine kleine Erinnerung: include verwendet den Include-Pfad. file_exists nicht. Abgesehen davon suchst du offensichtlich nach Problemen anstatt nach Lösungen (was nicht falsch sein muss, nur um zu sagen, dass meine Antwort möglicherweise nicht das erfüllt, wonach du suchst, sie deckt nur einen Fragment ab).

3voto

Chronial Punkte 59424

In beiden Beispielen wird die Festplatte zweimal berührt - einmal beim Lesen des Verzeichnisses und dann beim Lesen der Datei. Im ersten Beispiel geschieht dies beide Male während eines Befehls, der zweite Befehl trennt sie auf. Es ist sehr unwahrscheinlich, dass das include() das Verzeichnis erneut liest, da Ihr Betriebssystem einen Art HD-Cache enthalten sollte, der zumindest so lange halten sollte.

Aber offensichtlich versuchen Sie etwas zu überoptimieren. Es sei denn, Sie führen dies >100 Mal in Ihrem Skript aus, wird es überhaupt keinen Leistungsunterschied zwischen Ihren beiden Optionen geben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X