Profiling en PHP

Desde hace algunas semanas tengo pendiente escribir sobre profiling en PHP. Hace tiempo que no desarrollo ningún proyecto serio con PHP, sin embargo es un lenguaje de programación que siempre me traerá buenos recuerdos y del que procuro nos desvincularme demasiado. Aunque el marco tecnológico en el que me muevo ahora es otro, creo que es necesario no perder de vista otra opciones porque nos pueden aportar soluciones muy interesantes.

La intención de este post, y algún otro que le seguirá, es proporcionar algunas referencias para instalar y configurar un entorno de desarrollo con PHP en que tengamos la posibilidad de realizar debugging y profiling de forma más o menos seria. Las instrucciones están hechas sobre el sistema operativo Microsoft Windows, pero son fáciles de trasladar a otros sistemas operativos.  Antes de comenzar necesitamos conocer los requisitos para la instalación:

  • WAMP Server: Es un paquete preparado para Microsoft Windows ( lo he probado en Windows 2000, Windows XP y Windows Vista) que a través de un instalador tendremos disponible un Apache Web Server, PHP5 y MySQL. Concretamente, WAMP 1.7.1 tiene Apache Web Server 2.2.4, PHP 5.2.2 y MySQL 5.0.37. Al igual que este paquete existen otros como por ejemplo XAMPP (disponible para Microft Windows, Linux, Solaris y Mac OSX) y MAMP (disponible para Mac OSX y con una versión PRO),
  • Xdebug : Es la herramienta que nos proporcionará las trazas de los mensajes de error, información sobre la memoria consumida por los script, información sobre los tiempos de ejecución de script, funciones, etc… Esta herramienta se instalará y configurará como una extensión del intérprete de PHP. La versión que usaremos será la 2.0.0RC para Microsoft Windows y PHP 5.2.1 .
  • WinCacheGrind: Esta herramienta está disponible para Microft Windows y es la que nos permitirá analizar los archivos que Xdebug genera con la información de profiling a partir de una interfaz gráfica. Esta herramienta no es necesaria porque Xdebug permite varios modos para monitorizar la información, sin embargo, el que personalmente me parece más interesante es el que genera unos archivos que posteriormente pueden ser analizados con WinCacheGrind.

Una vez que nos hemos descargado el instalador de WAMP Server, Xdebug (extensión para PHP) y WinCacheGrind, procedemos a su instalación:

  1. De la instalación de WAMP Server poco hay que destacar porque precisamente una de las ventajas que tiene usar este tipo de paquetes en lugar de instalar las cosas de forma individual, es que proporciona un asistente que si mal no recuerdo lo único que pregunta es el directorio para la instalación, posibilidad de configurar los puertos con los que Apache Web Server y MySQL trabajarán y poco más. Tras la instalación y ejecutando wampserver tendremos una utilidad desde la que podremos lanzar los servicios y configurar Apache, MySQL y PHP. A continuación debemos lanzar los servicios, en nuestro caso con lanzar Apache Web Server es suficiente.
  2. Para comprobar que la instalación se ha realizado correctamente, podemos acceder desde nuestro navegador web a http://localhost y ver una página con información sobre el paquete instalado.
  3. Para instalar la extensión de PHP correspondiente a Xdebug:
    1. Copiamos la DLL en el directorio WAMP_INSTALL_DIR/php/ext/
    2. Habilitamos la extensión editando el archivo php.ini que se encuentra en WAMP_INSTALL_DIR/Apache2/bin
    3. Buscando la sección del archivo donde se encuentran el resto de extensiones añadimos la siguiente línea: zend_extension_ts=”WAMP_INSTALL_DIR/php/ext/LIBRARY_NAME”
  4. Reiniciamos Apache Web Server y accedemos al phpinfo que nos proporciona la págna principal de WAMP Server. Para comprobar que la extensión se ha cargado correctamente debemos obtener:
  5. Para descripción detallada sobre cada uno de los parámetros de configuración visitar la página de xdebug. A continuaciónun ejemplo de configuración básica (profiling):
    Sección con la configuración de Xdebug en php.ini

Espero que estas notas ayuden a configurar un entorno de desarrollo con PHP con la posibilidad de realizar tareas de profiling. Intentaré añadir un screenscast con un ejemplo.

One thought on “Profiling en PHP

Leave a Reply

Your email address will not be published. Required fields are marked *