• 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

Effectuez vos propres profils de mesure

Nous l'avons vu dans le chapitre précédent, le Web Profiler est capable de fournir de nombreuses informations, notamment grâce à son onglet Performance qui nous intéresse particulièrement.

Mais comment le Profiler retrouve ces informations et comment peut-on créer ses propres entrées ? 

Eh bien, à l'aide du composant StopWatch !

StopWatch, le composant pour profiler vos applications PHP simplement

Le composant et son intégration au sein du framework vous permettent de profiler votre application de façon simple sans avoir à utiliser microtime(). Mettez à jour l'action de contrôleur précédemment utilisé pour utiliser le service debug.stopwatch :

<?php
    public function indexAction(Request $request)
    {
        if ($this->container->has('debug.stopwatch')) {
            $stopwatch = $this->get('debug.stopwatch');

            $stopwatch->start('sleep action');
            sleep(5);
            $stopwatch->stop('sleep action');
        }

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

Parcourez à nouveau l'onglet Performance du Profiler après avoir accédé à la page. Vous devriez découvrir une nouvelle entrée "sleep action" :

Exemple d'utilisation du service debug.stopwatch
Exemple d'utilisation du service debug.stopwatch

 

Allez plus loin avec le composant StopWatch

Imaginons une situation où, par exemple, nous voudrions chronométrer le temps mis par PHP pour boucler sur chaque élément d'une boucle et trouver si le problème de performance est lié à un item particulier. C'est tout à fait possible avec le composant StopWatch qui définit la notion de "lap" ("tour" en anglais).

Adaptons à nouveau l'exemple précédent pour essayer cette fonctionnalité :

<?php
if ($this->container->has('debug.stopwatch')) {
    $stopwatch = $this->get('debug.stopwatch');

    $stopwatch->start('sleeps');
    for ($i = 1; $i < 10; $i++) {
        sleep(rand(1, 3));
        $stopwatch->lap('sleeps');
    }

    $stopwatch->stop('sleeps');
}

Voici le profil correspondant :

Exemple d'utilisation de
Exemple d'utilisation de "tour" lors d'une mesure avec le Profiler
Example of certificate of achievement
Example of certificate of achievement