Zend Framework : gagner en performances en supprimant les require_once

Bien que le framework dispose d'une classe nommée Zend_Loader qui permet de charger automatiquement les classes, les différents composants n'en tirent pas parti. Tous les fichiers du ZF sont truffés de require_once qui entraînent une certaine surcharge. L'intention première des concepteurs était de proposer des composants qui puissent être utilisés séparément. Ils n'ont donc pas imposé l'utilisation de Zend_Loader.

Le problème, c'est que parfois des classes sont chargées inutilement, alors que avec Zend_Loader, le chargement d'une classe ne se fait que lorque c'est nécessaire.

La suppression de ces require_once peut entraîner des gains de performances importants, car le chargement d'un fichier PHP est une opération lourde, qui abaisse la vitesse globale d'exécution des scripts et qui augmente l'empreinte mémoire.

C'est pour cette raison, que suite à cette discussion, l'utilisation du Zend_Loader devrait être rendu obligatoire pour la version 2.0 (prévue pour la 2ème moitié de 2009).

En attendant, si vous voulez bénéficier immédiatement de cette optimisation, vous pouvez d'hors et déjà effectuer un rechercher/remplacer sur les fichiers PHP du framework pour mettre en commentaire les require_once.

Si vous êtes sous Linux, je reproduis ci-dessous une commande proposée par Thomas Gelf pour réaliser l'opération :

find ./ -type f -name "*.php" | xargs -l sed -i 's/require_once /\/\/ require_once /g'
Utilisez cette commande avec précaution. Une erreur de frappe peut faire des dégats !

J'ai pour l'instant testé la méthode avec succès sur mon environnement de développement.

Comments

J'avais fait la meme chose, je n'ai egalement rencontre aucun probleme :)

Add new comment