• 15 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/25/20

Découvrez le Web Profiler de Symfony

Le Web Profiler est une application Symfony livrée avec le framework Standard Edition et disponible quand vous travaillez en environnement de développement. Il permet de collecter de nombreuses informations sur votre application durant son exécution : pour chaque requête utilisateur, le Web Profiler va créer un profil et l'application web fournit une interface soignée pour parcourir les informations de ce profil.

Le Web Profiler fournit également une barre de développement qui rassemble les informations les plus importantes sans avoir à accéder à l'application complète : 

La barre d'outils du Framework Symfony fournit de nombreuses métriques utiles au contrôle de la performance
La barre d'outils du framework Symfony

Nous voyons déjà apparaître quelques métriques utiles pour mesurer la performance :

  • le temps de rendu de la page (281 ms) ;

  • la consommation de mémoire (8.0 Mb) ;

  • le nombre d'appels au cache ;

  • le temps de rendu des blocs Twig...

Découverte de l'interface du Web Profiler

En cliquant sur la barre de développement en bas, nous accédons aux différents onglets du Web Profiler :

Le Web Profiler est composé de nombreux onglets utiles pour le deboggage de votre application
Le Profileur Web du framework Symfony

Il est possible de rechercher parmi les derniers profils créés par le Profiler, ou encore de rechercher les profils selon certaines informations (url, méthode HTTP, date de création...).

Maintenant, accédons plus particulièrement à la partie qui nous intéresse, l'onglet Performance :

Exemple de rendu de l'onglet Performance du Web Profiler pour une installation de Symfony 3.3.14
Onglet Performance du Web Profiler

Ce que l'on y voit est déjà très intéressant et permet de comprendre comment fonctionne une application Symfony :

  • L'application reçoit une requête utilisateur.

  • Si une route est disponible et autorisée, on appelle le contrôleur correspondant.

  • Le contrôleur est exécuté et retourne une réponse.

  • Enfin, le Web Profiler est exécuté et rajouté à la réponse produite et rendue à l'aide de Twig.

Cet onglet permet d'adapter le résultat en agissant sur le "treshold", c'est-à-dire le seuil d'enregistrement minimum d'une action du framework, en fonction de son temps d'exécution. Vous pouvez réduire le seuil à 0 pour voir tout ce que le Web Profiler est déjà capable d'enregistrer :).

Un premier exemple

Et si l'on modifiait l'action de contrôleur responsable du rendu de cette page pour exécuter - disons - une tâche très lente ?

<?php
// src/AppBundle/Controller/DefaultController

/**
 * @Route("/", name="homepage")
 */
public function indexAction(Request $request)
{
    // 10 secondes d'attente !
    sleep(10);

    return $this->render('default/index.html.twig', [
        'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
    ]);
}

Dans l'onglet Performance du Web Profiler, on peut vérifier que c'est bien le contrôleur qui a besoin de 10 secondes pour être exécuté. C'est simple, mais vous avez compris le principe : le profileur collecte des informations tout au long de la génération d'une page par le framework Symfony, et affiche des informations utiles pour chaque requête.

En résumé

  • Le framework Symfony est fourni avec le Web Profiler activé en mode de développement.

  • L'onglet Performance donne des informations sur toutes les étapes de génération d'une page Symfony.

  • Il est possible d'éditer le seuil d'enregistrement pour affiner la granularité des informations disponibles.

  • Le Token du profil généré est toujours disponible dans les en-têtes de la requête HTTP.

Cela étant dit, cette information ne nous est pas très utile, car si nous avions 5 ou 6 tâches exécutées dans le contrôleur, nous n'aurions aucun moyen de savoir laquelle est responsable du problème de performance  :-°. Mais ce problème sera résolu dans le chapitre suivant, quand nous créerons nos propres entrées dans l'onglet Performance !

Example of certificate of achievement
Example of certificate of achievement