Letzte Woche haben Angelo und ich an einem WP-CLI-Command gearbeitet und bei der Erstellung der Behat-Tests zufällig fehlschlagende und erfolgreiche Tests gehabt. Nach einigem Debugging sind wir dann auf die Idee gekommen, ob das Ergebnis der PHP-Funktion is_dir()
, die prüft ob ein Verzeichnis existiert, vielleicht zwischengespeichert wird.
Und tatsächlich, in der php.net-Doku zu is_dir()
heißt es:
»Note: The results of this function are cached. See clearstatcache() for more details.«
php.net-Doku zuris_dir()
-Funktion.
Unsere Reaktion sah, vorsichtig formuliert, so aus: 🤯
Ja, vielleicht gibt es Fälle, in denen das Cachen des Ergebnisses von PHP-Funktionen sinnvoll ist, unserer war davon aber sehr weit entfernt. Also haben wir unseren Code mit clearstatcache()
-Aufrufen ausgerüstet, um vor dem Aufruf von is_dir()
potenziell zwischengespeicherte Ergebnisse zu entfernen.
In der Doku zu clearstatcache()
sind noch einige weitere Funktionen aufgelistet, deren Ergebnisse ebenfalls gecacht werden, zum Beispiel file_exists()
oder is_file()
. Oh, und noch etwas, das vielleicht etwas seltsam ist: das Ergebnis der Funktionen wird nur gecacht, wenn die übergebenen Dateien oder Verzeichnisse existieren.
6 Reaktionen zu »Vorsicht vor PHP-Funktionen mit gecachtem Ergebnis«
Likes
Reposts