Position actuelle: Accueil> Derniers articles> Analyse du rôle de realpath_cache_size dans des projets à grande échelle

Analyse du rôle de realpath_cache_size dans des projets à grande échelle

gitbox 2025-06-03

Qu'est-ce que realPath_cache_size?

Dans PHP, chaque fois que vous appelez des fonctions de fonctionnement des fichiers telles que l'inclusion , le require , les fichiers_exists ou l'IS_File , PHP doit analyser le véritable chemin absolu du chemin donné. Ce processus d'analyse implique la question de l'interrogation du système de fichiers, en particulier lors de l'utilisation de Symlinks ou de chemins relatifs.

Pour réduire les frais généraux des appels système, PHP a introduit un "cache RealPath" pour mettre en cache les résultats de la résolution de chemin. realpath_cache_size est la limite de taille de ce cache, et l'unité est des octets. La valeur par défaut est généralement de 16k , ce qui peut être suffisant dans les petits projets, mais est enclin à remplir rapidement de grands projets.


Comment fonctionne le cache RealPath

Le cache RealPath de PHP est une table de hachage en mémoire qui est utilisée pour stocker les résultats de la résolution du chemin. Chaque fois qu'un script PHP doit analyser le chemin, il recherchera d'abord le cache:

  • Si le cache frappe, la valeur du cache sera renvoyée directement pour enregistrer les appels système;

  • Si le cache manque, un appel système est passé, le chemin est analysé et le résultat est mis dans le cache;

  • Si le cache est plein, les anciens éléments de cache sont éliminés.

Bien que ce mécanisme soit simple, il est d'une grande importance dans les projets avec une structure de fichiers complexes et s'appuyant sur de nombreuses dépendances. Par exemple, un projet qui utilise un chargement automatique (tel que le composer automatique de compositeur) peut charger des centaines de fichiers dans une seule demande, et chacun nécessite une résolution de chemin de chemin. Si le cache est insuffisant, il est possible que chaque demande répète le même analyse, entraînant des pertes de performances inutiles.


Exemple: comparaison des frais généraux de résolution de chemin

Supposons qu'il y ait l'extrait de code suivant:

<code> & lt ;? php pour ($ i = 0; $ i & lt; 1000; $ i ++) {require '/var/www/gitbox.net/project/lib/module'. ($ i% 10). '/Class.php'; } </code>

Dans cet exemple, bien qu'il n'y ait que 10 chemins différents, si le cache RealPath est trop petit, PHP redémarre le chemin à chaque fois qu'il nécessite , ce qui entraîne une surcharge d'E / S supplémentaire. Une fois que le taux de succès du cache est élevé, le nombre d'analyses peut être considérablement réduite, améliorant ainsi l'efficacité globale de l'exécution.


Comment afficher et ajuster realpath_cache_size

Vous pouvez afficher la configuration et l'utilisation actuelles du cache RealPath via la page phpinfo () de PHP, ou vous pouvez utiliser l'extrait de code suivant pour afficher dynamiquement l'utilisation du cache:

<code> & lt ;? php print_r (realPath_cache_get ()); </code>

Pour redimensionner le cache, ajoutez ou modifiez simplement la configuration suivante dans le fichier php.ini :

<code> realPath_cache_size = 128k </code>

Pour les grands cadres (tels que Laravel, Symfony, etc.) ou des projets PHP-FPM fonctionnant dans des environnements de concurrence élevés, il est recommandé de se mettre à 128k ou plus pour s'assurer que le cache n'échoue pas fréquemment.


Utiliser realpath_cache_ttl en collaboration avec

En plus de la taille du cache, realpath_cache_ttl est également un paramètre connexe, qui spécifie le temps de survie des entrées de cache en secondes. La valeur par défaut est de 120 secondes.

<code> realPath_cache_ttl = 300 </code>

Dans les environnements de développement avec un déploiement fréquent et des modifications fréquentes de structure de fichiers, cette valeur peut être raccourcie de manière appropriée; Dans les environnements de production, il peut généralement être réglé pour être plus élevé afin d'améliorer les performances.