Perfilar un script PHP

Subodh Poudel 21 junio 2022
Perfilar un script PHP

Este artículo lo guiará a través del proceso de creación de perfiles de un script PHP usando Xdebug.

Use Xdebug para perfilar un script en PHP

Xdebug es una herramienta popular de PHP para depurar y perfilar el script PHP. Perfilar un script significa analizar el código para asegurarse de que esté optimizado y tenga un rendimiento de alto nivel.

La creación de perfiles proporcionará información sobre la utilización de la CPU, la memoria y la red del programa. Las siguientes secciones demostrarán cómo configurar el entorno de generación de perfiles y perfilar un script de muestra en PHP.

Instale la herramienta Xdebug

El primer paso es descargar la herramienta Xdebug. En primer lugar, actualice su sistema con el siguiente comando.

sudo apt-get update

Después de actualizar los paquetes locales, use el siguiente comando en la terminal para instalar la herramienta Xdebug.

sudo apt-get install php-xdebug

A continuación, navegue por la ruta /etc/php/8.1/mods-disponible/xdebug.ini y abra el archivo xdebug.ini. Aquí, 8.1 es la versión PHP del sistema utilizado en el tutorial.

Puede variar de usuario a usuario. Agregue las siguientes líneas en el archivo xdebug.ini.

zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /tmp/xdebug_remote.log
xdebug.remote_mode = req
xdebug.remote_port = 9005

Aquí, el directorio 20210902 en la ruta /usr/lib/php/20210902/xdebug.so para el valor de la propiedad zend_extension puede diferir de un sistema a otro. Navegue hasta la ruta y use el nombre de directorio correcto para el valor de la propiedad zend_extension.

Luego, reinicie el servidor web usando los siguientes comandos si el servidor web es Apache.

sudo systemctl restart apache2
sudo /etc/init.d/apache2 restart

Para nginx, use el siguiente comando.

sudo systemctl restart nginx

Finalmente, se instala xdebug en el sistema.

Configurar php.ini para usar Xdebug

Podemos verificar la instalación de Xdebug en PHP mirando el resultado de la función phpinfo(). Sin embargo, la herramienta aún no está lista para ser utilizada.

Necesitamos configurarlo en el archivo php.ini. Para eso, navegue hasta el archivo php.ini y ábralo con un editor de texto.

Podemos encontrar la ruta del archivo en la salida phpinfo(). A partir del sistema actual, el archivo se encuentra en la ruta /etc/php/8.1/apache2/php.ini.

En el archivo php.ini, agregue la siguiente línea al final del archivo.

[xdebug]
zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.show_local_vars=1

Cambie el nombre del directorio 20210902 con el directorio utilizado en su sistema. A continuación, establezca las propiedades display_errors y display_startup_errors en On y guarde el archivo.

Una vez más, reinicie el servidor web. Ahora, Xdebug está listo para usarse.

Perfilar un script PHP

El paso final es perfilar un script PHP. Necesitamos escribir algunos códigos PHP para perfilarlo.

Por ejemplo, cree cuatro variables $a, $b, $c y $d. Asigne un valor entero 5 y un valor de cadena '5' en $a y $b.

Del mismo modo, asigna las matrices array(5) y array('5') en $c y $d.

A continuación, utilice la función var_dump() para volcar las cuatro variables. Por último, descargue una variable $v nuevamente.

Tenga en cuenta que no hemos creado ninguna variable llamada $v.

Código de ejemplo:

$a=5;
$b='5';
$c=array(5);
$d=array('5');

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);

var_dump($v);

Producción:

Perfilar un script PHP

En la sección de salida, se perfila el script PHP. La sección errónea del código está resaltada.

Muestra la información como Call Stack, donde se proporciona información sobre el tiempo, la memoria, la función y la ubicación. De igual forma, también se da la información sobre la variable en ámbito local.

De esta forma, podemos usar Xdebug para perfilar un script PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn