PHP PHP-Cache für file_exists()?

yoyo2435x

Cadet 3rd Year
Registriert
Juli 2021
Beiträge
34
Guten Morgen,

ich versuche gerade (auf einem IONOS-Webspace, falls relevant) etwas zu testen...

Prüfe ich, ob im Ordner /uploads/ das Foto x.jpg vorhanden ist - mit file_exists('/uploads/x.jpg) -
so erhalte ich false, weil das Foto tatsächlich nicht vorhanden ist. Speichere ich dann das Foto in
diesem Ordner und versuche das Ganze noch einmal, erhalte ich noch immer false, obwohl ich
das Foto über den Pfad auch aufrufen könnte.

Gibt es grundsätzlich irgend einen Cache, der der Fehler verursachen könnte?

oder habt ihr Ideen, woran das Problem liegen könnte?

VG.
 
Um es dir ganz einfach zu machen:
Hinweis: Die Ergebnisse dieser Funktion werden gecached.

In die Dokumentation solltest du trotzdem schauen! PHP ist wunderbar dokumentiert!
 
Okay, das scheint es zu sein. Kan ich den Zwischenspeicher denn leeren?
 
Nein es steht direkt in der Doku.

https://www.php.net/manual/en/function.file-exists.php#refsect1-function.file-exists-notes schrieb:
Selbst die "allererste" Version vom 12.04.2001 beinhaltet bereits die Notiz:
https://web.archive.org/web/20010413165926/https://www.php.net/manual/en/function.file-exists.php schrieb:
 
  • Gefällt mir
Reaktionen: BAGZZlash
Hmm, nur so am Rande: Gibt/gab es einen "guten" Grund dafür, dass das Resultat gecached wird?
 
Die Frage müsstest du wohl eher den Entwicklern der Funktion stellen.
 
Bist du sicher, dass der Pfad stimmt? "/uploads/x.jpg" ist ein absoluter Pfad, es wird also nicht im Verzeichnis geschaut, in dem auch die PHP-Datei liegt.
 
N00bn00b schrieb:
Gibt/gab es einen "guten" Grund dafür, dass das Resultat gecached wird?
Weil eine Festplatte, abseits des Netzwerks, so ziemlich das langsamste Element überhaupt ist. Ja, auch SSDs sind verhältnismäßig lahme Schnecken, auch wenn sie exorbitant schneller als HDDs sind. Im Gegensatz zum (schlimmstenfalls) RAM sind da trotzdem noch einige Nullen zu viel.

- https://gist.github.com/jboner/2841832
https://gist.github.com/hellerbarde/2843375 schrieb:
Latency numbers every programmer should know

1629194222134.png


Lets multiply all these durations by a billion:
Code:
L1 cache reference                  0.5 s         One heart beat (0.5 s)
L2 cache reference                  7 s           Long yawn
Main memory reference               100 s         Brushing your teeth
Send 2K bytes over 1 Gbps network   5.5 hr        From lunch to end of work day
SSD random read                     1.7 days      A normal weekend
Disk seek                           16.5 weeks    A semester in university
Und diese Zeiten kannst du nochmal etwas heraufsetzen, denn ein Zugriff findet ja nicht ausschließlich durch dein Programm statt.
 
  • Gefällt mir
Reaktionen: floq0r und N00bn00b
Mal realpath('/uploads/x.jpg') nutzen. Damit sollte der komplette Pfad geliefert werden und dann mit file_exists() einfach checken.

if(file_exists(realpath('/uploads/x.jpg'))){ # mach halt etwas :-) }
 

Ähnliche Themen

Zurück
Oben