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" :
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 :