Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Profiling en PHP: ¿qué partes consumen más?
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Profiling en PHP: ¿qué partes consumen más? (2)

Generando la información

Es muy fácil, nos aseguramos que la ruta de los logs ( /var/www/apd ) tiene permisos para Apache escriba en ella y luego solo tenemos que añadir una línea a nuestro script para que empiece a analizar:

<?php apd_set_pprof_trace() ?>

Hay que añadirla al principio del script, por ejemplo esto en WordPress sería en el fichero wp-blog-header.php sin dejar espacios (aunque sí que vale un salto de línea) entre ése código y el <?php que inicia el código de WordPress. Esto es importante porque de lo contrario dará errores de cabeceras enviadas erróneamente (exactamente igual que con los plugins).

Traduciendo a idioma humano

Ahora, cada petición que hagamos genera un reporte un blog de WordPress recién creado sin nada más que lo básico genera un reporte de 300KB, por lo que hay que tener cuidado de no saturar la máquina: abriremos sólo las páginas que queremos ver su rendimiento (por ejemplo la portada).

Luego, supongamos que el primer reporte que hacemos es el de la portada y se llama pprof.10422.1 pues para traducirlo a algo entendible por nosotros usaremos pprofp .

pprofp -u pprof.10422.1

Con esto ya tenemos el reporte hecho.

¿Un ejemplo de reporte?

WordPress recién instalado, la portada saca esto:

Trace for /var/www/wordpress/wp-blog-header.php Total Elapsed Time = 0.27 Total System Time = 0.02 Total User Time = 0.24 Real User System secs/ cumm %Time (excl/cumm) (excl/cumm) (excl/cumm) Calls call s/call Memory Usage Name -------------------------------------------------------------------------------------- 8.5 0.01 0.01 0.02 0.02 0.00 0.00 115 0.0002 0.0002 0 function_exists 6.8 0.01 0.01 0.02 0.02 0.00 0.00 1110 0.0000 0.0000 0 strlen 6.8 0.02 0.02 0.02 0.02 0.00 0.00 210 0.0001 0.0001 0 serialize 5.1 0.01 0.06 0.01 0.06 0.00 0.00 377 0.0000 0.0001 0 apply_filters 5.1 0.00 0.00 0.01 0.01 0.00 0.00 163 0.0001 0.0001 0 preg_match 3.4 0.01 0.01 0.01 0.01 0.00 0.00 194 0.0000 0.0000 0 WP_Object_Cache->get 3.4 0.01 0.01 0.01 0.01 0.00 0.00 4 0.0020 0.0020 0 dirname 1.7 0.00 0.00 0.00 0.00 0.00 0.00 2 0.0020 0.0020 0 include_once 1.7 0.00 0.00 0.00 0.00 0.00 0.00 171 0.0000 0.0000 0 trim 1.7 0.00 0.00 0.00 0.00 0.00 0.00 15 0.0003 0.0003 0 date 1.7 0.00 0.00 0.00 0.00 0.00 0.00 137 0.0000 0.0000 0 mysql_fetch_field 1.7 0.00 0.00 0.00 0.00 0.00 0.00 333 0.0000 0.0000 0 chr 1.7 0.00 0.00 0.00 0.00 0.00 0.00 19 0.0002 0.0002 0 preg_split 1.7 0.00 0.00 0.00 0.00 0.00 0.00 11 0.0004 0.0004 0 is_callable 1.7 0.00 0.12 0.00 0.10 0.00 0.01 148 0.0000 0.0007 0 call_user_func_array 1.7 0.00 0.00 0.00 0.00 0.00 0.00 3 0.0013 0.0013 0 mktime 1.7 0.00 0.00 0.00 0.00 0.00 0.00 163 0.0000 0.0000 0 mysql_num_fields 1.7 0.00 0.00 0.00 0.00 0.00 0.00 167 0.0000 0.0000 0 array_slice 1.7 0.00 0.00 0.00 0.00 0.00 0.00 60 0.0001 0.0001 0 strpos 1.7 0.00 0.00 0.00 0.00 0.00 0.00 1 0.0040 0.0040 0 ini_get

Lo cual coincide con lo que saca en forma de comentario en el HTML:

<!-- 28 queries. 0.269 seconds. -->

¿Algo más?

¡Sí! Al ejecutar pprofp me ha dado un error ya que ha intentado encontrar php en /usr/local/bin , lo he arreglado con un enlace simbólico:

ln -s /usr/bin/php5 /usr/local/bin/php

También, como ya me pasó anteriormente, el mencionar phpinfo() y apd_set_pprof_trace() con el “;” final hace que salte mod_security y me impide publicar esto, así que si bien normalmente las funciones funcionan igual terminadas en () que en () + ; si os da problemas usad la segunda forma…

Repito… ¿ALGO MÁS?

No… }:P




Autor: Armonth
http://sigt.net/archivo/profiling-en-php-que-partes-consumen-mas.xhtml

Usuarios que han visto este tema también han visto...

- Resultados de una consulta a la BD en dos columnas
- Ejecutar comandos shell mediante PHP
- Mostrar imagenes aleatorias en PHP de forma sencilla
- Introducción basica a Flash con PHP
- Ponle una marca a las imágenes de tu web


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 26-05-2012 a las 09:40:15