Accélérer find_in_path()

© Christian PAULUS. Document créé le 2 janvier 2008 , mis à jour le 2 janvier 2008.

Les cons ça ose tout. C'est même àça qu'on les reconnaît. Michel Audiard

Accueil du site > Astuces > SPIP > Accélérer find_in_path()

Squelettes / SPIP 1.9.2c

Pour optimiser les temps d’accès à votre site, il suffit parfois de simplement recopier quelques fichiers au bon endroit.

Lorsque SPIP cherche un fichier dans l’arborescence du site, il fait appel à sa fonction find_in_path().

Cette fonction find_in_path() cherche le fichier dont le nom est donné en paramètre dans divers répertoires, et ceci dans cet ordre :

  1. le répertoire des squelettes nommés par la variable $dossier_squelettes. Lorsque plusieurs répertoires squelettes sont précisés dans cette variable, le dernier déclaré sera traité en premier ;
  2. le répertoire nommé ’squelettes’ ;
  3. le répertoire racine des plugins activés ;
  4. la racine du site (WROOT) ;
  5. le répertoire de distribution ’dist’ ;
  6. le répertoire privé ’ecrire’ ;

find_in_path() fait donc au minimum le tour de deux répertoires : le dossier ’squelettes’ - indirectement, par appel de la fonction creer_chemin() - et la racine du site avant de trouver le squelette dans le répertoire de distribution ’dist’.

Pour peu que vous ayez créé le répertoire ’squelettes’ et ajouté et défini $dossier_squelettes dans mes_options.php, le temps de recherche est au minimum doublé.

Si vous voulez accélérer la recherche de fichiers, recopiez dans ’squelettes’ ou votre $dossier_squelettes l’ensemble des fichiers présents dans le répertoire de distribution ’dist’ sera probablement une bonne solution.

Ne pas oublier de supprimer les squelettes de votre répertoire de squelettes s’ils sont personnalisés par un plugin. C’est le cas par exemple de LiLo qui propose son propre squelette ’login.html.

Quant à l’option d’optimisation proposée par la modification de

@define('_EXTENSION_PHP', '.php3');
#@define('_EXTENSION_PHP', '');

en mettant en commentaire la première ligne et en activant la seconde dans inc_version.php , elle ne concerne que les appels à include_spip().

Répondre à cet article