Objectif
Le composant Zend_Db_Profiler du Zend Framework permet de profiler les requêtes exécutées sur la base de données d’une application.
On obtient ainsi pour chaque page la liste des requêtes ainsi que leurs temps d’exécution respectifs, et ceci sans avoir à ajouter une ligne de code aux classes inspectées.
Le profileur spécialisé Zend_Db_Profiler_Firebug propose quand à lui d’envoyer ces informations directement dans la console de Firebug.
Voyons ici comment le mettre en place dans le bootstrap afin de profiler nos requêtes.
Pré-requis
- ZF, version supérieure à 1.6 (ici la version 1.9.4) ;
- Firefox, version 2 ou 3 ;
- Extension Firefox Firebug ;
- Extension Firefox FirePHP.
Mise en place
Pour la suite, on supposera que votre application définie sa connexion à la base de données via un fichier de configuration du type mon_projet/application/configs/application.ini :
[production] ... bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" ... resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "user" resources.db.params.password = "password" resources.db.params.dbname = "dbname" [testing : production] ... [development : production] ...
Votre fichier /mon_projet/public/index.php utilise un bootstrap pour initialiser l’application avant de dispatcher les requêtes HTTP :
... require_once 'Zend/Application.php'; $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH.'/configs/application.ini'); $application->bootstrap()->run(); ...
Enfin, voici comment définir l’utilisation du profileur Firebug au moment de l’initialisation de l’adapteur à la base de données dans mon_projet/application/Bootstrap.php :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { .... /** * Configurer l'adapteur à la base de données * @return Zend_Application_Resource_Db */ protected function _initDb() { $db = $this->getPluginResource('db'); if (APPLICATION_ENV == 'development') { $profiler = new Zend_Db_Profiler_Firebug('Toutes les requêtes'); $profiler->setEnabled(true); $db->getDbAdapter()->setProfiler($profiler); } Zend_Db_Table_Abstract::setDefaultAdapter($db->getDbAdapter()); return $db; } .... }
Désormais, chaque requête exécutée sur l’environnement de développement sera profilée.
Il ne reste plus qu’à autoriser votre site à échanger des informations avec FirePHP :
- Se rendre sur l’onglet console de FireBug et l’activer ;
- Ajouter l’hôte via le menu de FirePHP > Allowed Sites ;

Pour tester, chargeons une page dont la construction nécessite l’exécution de requêtes :
Pour aller plus loin
Zend_Db_Profiler permet également de filtrer les requêtes logguées par leur temps d’exécution ou encore par leur type (select, insert, etc), pour se faire, se référer à la documentation du composant.

Magento
Joomla!
Zend Fr.
Ubuntu



![Validate my RSS feed [Valid RSS]](/wp-content/themes/libre-a-vous/images/rss-valid.png)