Symfony: tutorial 7: depurando todo con lupa, el profiler

Symfony web profiler

En este post traigo una review del perfilador de Symfony Flex, Symfony 4, el profiler. Es una gran herramienta de desarrollo web que nos brinda Symfony. Podemos ver muchos datos internos de cómo funciona todo por dentro: la petición y respuesta, rendimiento, envío de formularios, validaciones, datos de las excepciones, logs… pasando por Doctrine, enrutamiento..

Es decir, con el perfilador, cuando vayamos construyendo la aplicación web, tendremos una cantidad ingente de información para arreglar o mejorar todo. Podemos investigar con lupa todos los entresijos de lo que ocurre desde que se hace la petición desde el navegador del visitante, hasta que el servidor ha procesado la respuesta, construyéndola y devolviendo al mismo navegador dicha respuesta para que se pinte.

Cómo instalar el perfilador

Basta con lanzar desde línea de comandos, en un proyecto Symfony funcionando, lo siguiente:

composer require --dev profiler

Y esperamos a que se instale. El package profiler es un alias de symfony/profiler-pack. Así que si todo ha ido bien debemos de poder ver algo como esto cuando arrancamos el proyecto en local y estamos desarrollando:

Symfony profiler

Qué herramientas trae el perfilador de Symfony Flex, Symfony 4

Tenemos una gran cantidad de herramientas en el perfilador. Incluso hay bundles que van añadiendo sus propias herramientas al perfilador para ayudarnos a los desarrolladores a mejorar en nuestro día a día.

Una imagen vale más que mil palabras, así que de un vistazo, hacemos click en la barra que se ve en la imagen de arriba localmente en tu proyecto donde estés trabajando. Se expandirá a pantalla completa. Si le hacemos click a la sección de Doctrine verás algo como lo siguiente:

Symfony profiler doctrine

Es muy interesante estudiar la cantidad de consultas que se están haciendo en tu proyecto. Ahora entran en juego cosas como las consulta directas a base de datos que se hacen en los controladores. Tenemos las consultas lazy a la base de datos que se hacen desde las plantillas, quizá al sacar datos de una entidad que le hemos pasado.

Cuando vaya creciendo tu proyecto, puedes llegar a puntos en los que estas consultas lazy generen demasiado retardo. Ahora dejo un truco:

Si quieres evitar consultas lazy desde las plantillas, usa JOINs en las consultas primeras que hagas en los controladores, o en repositorios de las entidades.

Tenemos información sobre las traducciones, Twig, seguridad.. el etcétera es muy largo como para abarcarlo todo en un post. Una sección del perfilador es la de la performance de Symfony. Con esto podrás ver muchos detalles sobre cómo se va ejecutando el proyecto, paso a paso, desde la petición inicial del navegador, hasta su final. Puedes ver cómo se renderizan las plantillas, cómo unas llaman a otras, qué eventos se van disparando, mucha información relacionada con los tiempos de ejecución..

Si quieres olvidarte de seguir trabando con los var_dump de toda la vida, pintando en HTML los resultados, usando registros de datos en fichero.. como siempre se hacía antiguamente, ésta es la mejor herramienta de depuración que he visto en la programación web.

Ya me despido con esta imagen.. otro día más.. esto es la performance de una petición a la pantalla inicial. En el Twig (la plantilla) se usan las sentencias render(controller( para dividir en bloques el renderizado de cajas. Estas cajas vuelven a lanzar peticiones a otros controladores. Esto es muy parecido a lo que hace Varnish cuando va renderizando bloques de la plantilla de un Magento.

Symfony profiler performance

Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dieciseis − 2 =