Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Le registre de code Drupal

Référence en anglais sur drupal.org : http://drupal.org/node/350780
19 Janvier 2009 - 17h27


Drupal 7 introduit un registre de code - un inventaire de toutes les fonctions, classes et interfaces de tous les modules activés et des fichiers du noyau Drupal. Les hooks des modules Drupal, les formulaires et les callback de menu, tous utilisent le registre pour charger le code au fur et à mesure des besoins. Le registre mémorise le chemin du fichier où une fonction donnée, une classe ou une interface sont déclarés, et charge le fichier lorsque c'est nécessaire.

Le registre permet le chargement différé du code de ces systèmes (lazy-loaded), ce qui réduit le chargement et l'analyse de code superflu.

Les modules peuvent maintenant déplacer tout le code de ces sous-systèmes dans module_name.registry.inc et Drupal ne le chargera qu'à la demande. Cela réduira le code chargé par demande et réduire l'empreinte mémoire de Drupal.

Le seul fichier chargé sans conditions par Drupal pour un module donné est module_name.module. C'est dans ce fichier que doit se trouver le code qui doit être disponible en permanence, en dehors de l'utilisation du registre. Les modules qui n'ont pas ce type de code n'ont pas besoin d'un fichier module_name.module, et aucun code ne sera chargé par avance pour ces modules (Note : le développement est en cours, consultez #340723: make modules only require .info files.)

Le registre charge également les classes et les interfaces à la volée, via le mécanisme d'auto-chargement de classes de php.

Comme le registre est adossé à la base de données, il existe plusieurs couches de mise en cache pour réduire autant que possible les requêtes.

Tout d'abord, toutes les recherches de registre sont mises en cache via la reconstruction du registre. Même lors de la reconstruction du registre, les parties du cache qui correspondent à des fichiers n'ayant pas été modifiés sont conservées, permettant un très taux de succès élevé. Ce cache peut être effacé via le formulaire « Effacer tous les caches » de la page des paramètres de Performance.

La seconde couche de cache concerne l'implémentation des hooks. Lorsque le registre est construit, on mémorise les informations de mise en œuvre possible des hooks avec chaque ressource. Cela permet de chercher, avec une seule requête, tous les modules qui mettent en œuvre un hook, et de mettre cette information en cache entre les reconstructions du registre.