• 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

Allez plus loin avec le Client Blackfire

Prêt à passer à l'étape supérieure ? Avec le Companion, vous pouvez déjà profiler des requêtes HTTP en GET, mais Blackfire est capable de profiler beaucoup plus de choses :

  • les requêtes AJAX ;

  • les requêtes HTTP de tout type (GET, POST, PUT, DELETE) ;

  • les scripts PHP utilisables en ligne de commande.

Pour ce faire, vous allez donc utiliser le Client Blackfire, un outil puissant et configurable, accessible dans l'invite de commande.

Profiler des requêtes HTTP avec le Client

Profilons à nouveau notre application, mais cette fois à partir de l'invite de commande, à l'aide de la commande  blackfire curl http://localhost:8000/fr :

Exécution d'un profil à l'aide du Client Blackfire
Exécution d'un profil à l'aide du Client Blackfire

Cette commande a effectué la même chose que le Companion, et nous pouvons voir le récapitulatif des métriques, ainsi que le lien vers le profil disponible sur la plateforme Blackfire.io.

Pourquoi Blackfire essaie-t-il d'exécuter des tests?

La réponse à cette question sera donnée un peu plus loin dans ce cours... ;)

Rien n'est magique, Blackfire a utilisé le logiciel cURL disponible sur votre machine pour effectuer la requête HTTP. Ce qui est bien, avec le logiciel cURL, c'est que l'on peut effectuer tout type de requête HTTP !

Profiler la validation d'un formulaire

Le grand intérêt d'avoir accès à des outils comme cURL est qu'il est tout à fait possible de récupérer, pour chaque requête HTTP, son équivalent en cURL dans la console de développement de votre navigateur !

Par exemple, éditez un des articles du projet de démonstration de Symfony et collectez l'appel cURL correspondant. Il faudra d'abord ouvrir la console de développement de votre navigateur et soumettre une première fois le formulaire pour que l'appel du formulaire en POST soit disponible dans l'onglet "réseau" :

Récupération cURL d'une requête dans Google Chrome (édition d'un article en POST)
Récupération de la soumission d'un formulaire dans Google Chrome

Puis, vous pouvez exporter la commande cURL correspondante dans les options (ici, c'est Google Chrome, mais ces fonctions sont également disponibles sur les autres navigateurs) :

Capture d'écran explicative de l'export de l'appel cURL pour ré-utilisation dans Blackfire
Export de l'appel cURL pour réutilisation dans Blackfire dans Google Chrome

Maintenant, à l'aide du Client, la requête devrait ressembler à cela :

blackfire curl 'http://localhost:8000/fr/admin/post/1/edit' 
    -H 'Cookie: PHPSESSID=8arrp1f6pl2rm6a5t7e1m7v03i' 
    -H 'Origin: http://localhost:8000' 
    -H 'Accept-Encoding: gzip, deflate, br' 
    -H 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7'
    -H 'Upgrade-Insecure-Requests: 1'
    -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    -H 'Content-Type: application/x-www-form-urlencoded'
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Cache-Control: max-age=0'
    -H 'Referer: http://localhost:8000/fr/admin/post/1/edit'
    -H 'Connection: keep-alive'
    --data 'post%5Btitle%5D=Lorem+ipsum+dolor+sit+amet+consectetur+adipiscing+elit+eee&post%5Bsummary%5D=Urna+nisl+sollicitudin+id+varius+orci+quam+id+turpis.+Pellentesque+vitae+velit+ex.+Ubi+est+barbatus+nix.+Lorem+ipsum+dolor+sit+amet+consectetur+adipiscing+elit.+Pellentesque+et+sapien+pulvinar+consectetur.+Mauris+dapibus+risus+quis+suscipit+vulputate.&post%5Bcontent%5D=Lorem+ipsum+dolor+sit+amet+consectetur+adipisicing+elit%2C+sed+do+eiusmod+tempor%0D%0Aincididunt+ut+labore+et+**dolore+magna+aliqua**%3A+Duis+aute+irure+dolor+in%0D%0Areprehenderit+in+voluptate+velit+esse+cillum+dolore+eu+fugiat+nulla+pariatur.%0D%0AExcepteur+sint+occaecat+cupidatat+non+proident%2C+sunt+in+culpa+qui+officia%0D%0Adeserunt+mollit+anim+id+est+laborum.%0D%0A%0D%0A++*+Ut+enim+ad+minim+veniam%0D%0A++*+Quis+nostrud+exercitation+*ullamco+laboris*%0D%0A++*+Nisi+ut+aliquip+ex+ea+commodo+consequat%0D%0A%0D%0APraesent+id+fermentum+lorem.+Ut+est+lorem%2C+fringilla+at+accumsan+nec%2C+euismod+at%0D%0Anunc.+Aenean+mattis+sollicitudin+mattis.+Nullam+pulvinar+vestibulum+bibendum.%0D%0AClass+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos%0D%0Ahimenaeos.+Fusce+nulla+purus%2C+gravida+ac+interdum+ut%2C+blandit+eget+ex.+Duis+a%0D%0Aluctus+dolor.%0D%0A%0D%0AInteger+auctor+massa+maximus+nulla+scelerisque+accumsan.+*Aliquam+ac+malesuada*%0D%0Aex.+Pellentesque+tortor+magna%2C+vulputate+eu+vulputate+ut%2C+venenatis+ac+lectus.%0D%0APraesent+ut+lacinia+sem.+Mauris+a+lectus+eget+felis+mollis+feugiat.+Quisque%0D%0Aefficitur%2C+mi+ut+semper+pulvinar%2C+urna+urna+blandit+massa%2C+eget+tincidunt+augue%0D%0Anulla+vitae+est.%0D%0A%0D%0AUt+posuere+aliquet+tincidunt.+Aliquam+erat+volutpat.+**Class+aptent+taciti**%0D%0Asociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Morbi%0D%0Aarcu+orci%2C+gravida+eget+aliquam+eu%2C+suscipit+et+ante.+Morbi+vulputate+metus+vel%0D%0Aipsum+finibus%2C+ut+dapibus+massa+feugiat.+Vestibulum+vel+lobortis+libero.+Sed%0D%0Atincidunt+tellus+et+viverra+scelerisque.+Pellentesque+tincidunt+cursus+felis.%0D%0ASed+in+egestas+erat.%0D%0A%0D%0AAliquam+pulvinar+interdum+massa%2C+vel+ullamcorper+ante+consectetur+eu.+Vestibulum%0D%0Alacinia+ac+enim+vel+placerat.+Integer+pulvinar+magna+nec+dui+malesuada%2C+nec%0D%0Acongue+nisl+dictum.+Donec+mollis+nisl+tortor%2C+at+congue+erat+consequat+a.+Nam%0D%0Atempus+elit+porta%2C+blandit+elit+vel%2C+viverra+lorem.+Sed+sit+amet+tellus%0D%0Atincidunt%2C+faucibus+nisl+in%2C+aliquet+libero.&post%5BpublishedAt%5D=2017-02-18T21%3A58%3A47%2B01%3A00&post%5Btags%5D=adipiscing%2Cincididunt&post%5B_token%5D=dQTlFuyHBgEa5SYvZpblneTRQqJy4-Ufj5z3Z-amGF8'
    --compressed

Encore une fois, Blackfire fournira le lien vers le profil sur la plateforme pour vous permettre d'améliorer la performance de la gestion de vos formulaires.

Profiler des scripts en ligne de commande

PHP peut être exécuté sous forme de scripts utilisables via l'invite de commande. Dans ce cas, vous pouvez utiliser la commande run du Client Blackfire :

C:\Users\Mickaël> blackfire run php -r "echo('Blackfire is an awesome profiler');"
Blackfire is an awesome PHP Profiler!
Blackfire Run completed
Graph URL https://blackfire.io/profiles/31e5d5c2-4402-400b-af86-48aba43513b2/graph
No tests! Create some now https://blackfire.io/docs/cookbooks/tests
No recommendations

Wall Time 1.37ms
CPU Time n/a
I/O Time n/a
Memory 35.2KB
Network n/a n/a -
SQL n/a -

Avoir la possibilité d'appeler php avec le Client Blackfire est intéressant, car vous pourriez, par exemple, profiler une suite de tests pour optimiser son exécution. Pour faire le lien avec le cours précédent sur les tests, vous pourriez par exemple tester la commande suivante :

blackfire run php ./vendor/bin/phpunit

En résumé

Le Client Blackfire nous offre encore plus de possibilités pour optimiser nos sites, mais également nos applications "console" réalisées en PHP :

  • profilage de tout type de requête HTTP ;

  • profilage de requêtes AJAX ;

  • profilage d'appels effectués en PHP ;

  • profilage d'applications console développées en PHP.

Maintenant que nous sommes capables de récolter toutes les informations nécessaires, nous allons pouvoir commencer à améliorer nos applications. Cela sera l'objet du chapitre suivant.

À très bientôt :D !

Example of certificate of achievement
Example of certificate of achievement