In PHP muss PHP den realen absoluten Pfad des angegebenen Pfades analysieren, wenn Sie Dateioperationsfunktionen wie einbeziehen , erfordern , file_exists oder is_file aufrufen. Dieser Analyseprozess umfasst die Abfrage des Dateisystems, insbesondere bei Verwendung von Symlinks oder relativen Pfaden.
Um den Overhead von Systemaufrufen zu verringern, führte PHP einen "Realpath -Cache" ein, um die Ergebnisse der Pfadauflösung zu speichern. RealPath_Cache_Size ist die Größengrenze dieses Cache, und das Gerät ist Bytes. Der Standardwert beträgt normalerweise 16K , was in kleinen Projekten möglicherweise ausreicht, aber anfällig dafür ist, große Projekte schnell auszufüllen.
Der Realpath -Cache von PHP ist eine Hash -Tabelle im Speicher, mit der die Ergebnisse der Pfadauflösung gespeichert werden. Jedes Mal, wenn ein PHP -Skript den Pfad analysieren muss, sucht es zunächst nach dem Cache:
Wenn der Cache trifft, wird der Cache -Wert direkt zurückgegeben, um Systemanrufe zu speichern.
Wenn der Cache verfehlt, wird ein Systemaufruf getätigt, der Pfad wird analysiert und das Ergebnis wird in den Cache gesteckt.
Wenn der Cache voll ist, werden die alten Cache -Elemente beseitigt.
Obwohl dieser Mechanismus einfach ist, ist er bei Projekten mit komplexer Dateistruktur von großer Bedeutung und stützt sich auf viele Abhängigkeiten. Beispielsweise kann ein Projekt, das ein automatisches Laden verwendet (z. B. Composer Autoloader), Hunderte von Dateien in einer einzigen Anforderung laden und jeweils Auslöser für Auslöser benötigt . Wenn der Cache nicht ausreicht, ist es möglich, dass jede Anforderung die gleiche Parsen wiederholt, was zu unnötigen Leistungsverlusten führt.
Angenommen, es gibt den folgenden Code -Snippet:
<Code> & lt;? php für ($ i = 0; $ i & lt; 1000; $ i ++) {fordern '/var/www/gitbox.net/project/lib/module'. ($ i % 10). '/Class.php'; } </code>In diesem Beispiel, obwohl es nur 10 verschiedene Pfade gibt, wird der PHP den Pfad jedes Mal erneut, wenn der Realpath-Cache zu klein ist, jedes Mal wieder auferlegt, was zu zusätzlichem E/A-Overhead führt. Sobald die Cache -Trefferquote hoch ist, kann die Anzahl der Parsen erheblich reduziert werden, wodurch die Gesamtausführungseffizienz verbessert wird.
Sie können die aktuelle Realpath -Cache -Konfiguration und -verwendung über PHP -Seite von PHP anzeigen oder das folgende Code -Snippet verwenden, um die Cache -Nutzung dynamisch anzusehen:
<Code> & lt;? php print_r (realpath_cache_get ()); </code>Um den Cache zu ändern, fügen Sie einfach die folgende Konfiguration in der Datei php.ini hinzu oder ändern Sie einfach:
<code> realpath_cache_size = 128k </code>Für große Rahmenbedingungen (wie Laravel, Symfony usw.) oder PHP-FPM-Projekte, die in Umgebungen mit hoher Genauigkeit ausgeführt werden, wird empfohlen, auf 128.000 oder höher einzustellen, um sicherzustellen, dass der Cache nicht häufig ausfällt.
Zusätzlich zur Cache -Größe ist RealPath_Cache_TTL auch ein zugehöriger Parameter, der die Überlebenszeit von Cache -Einträgen in Sekunden angibt. Der Standardwert beträgt 120 Sekunden.
<code> realpath_cache_ttl = 300 </code>In Entwicklungsumgebungen mit häufigen Bereitstellungen und häufigen Änderungen der Dateistruktur kann dieser Wert angemessen verkürzt werden. In Produktionsumgebungen kann es normalerweise höher sein, um die Leistung zu verbessern.