PDF de programación - Depuración y profiling en Drupal: casos prácticos

Imágen de pdf Depuración y profiling en Drupal: casos prácticos

Depuración y profiling en Drupal: casos prácticosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
743 visualizaciones desde el 14 de Enero del 2017
67,8 KB
10 paginas
Creado hace 11a (22/10/2012)
Depuración y profiling en
Drupal: casos prácticos



xhprof

$ pecl install channel://pecl.php.net/xhprof-0.9.2
$ cd /tmp
$ tar zxvf /tmp/buildd/php5-5.3.3/pear-build-
download/xhprof-0.9.2.tgz
$ cd xhprof-0.9.2/
$ su -
$ chown -R root.root .
$ cp -ra xhprof-0.9.2/ /usr/share/php
$ cp -ra xhprof_lib/ /usr/share/php
$ cd extension/
$ phpize
$ ./configure
$ make && make install



xhprof
xhprof

$ su -
# cat << EOF > /etc/php5/apache2/xhprof.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof
EOF
# mkdir /tmp/xhprof
# chown www-data.www-data /tmp/xhprof
# /etc/init.d/apache2 reload



Xdebug
$ su -
# apt-get install php5-xdebug vim-nox
# cd /tmp
# git clone git://github.com/ludovicPelle/vim-xdebug.git
# cd vim-xdebug/plugin
# cp debugger.* /usr/share/vim/vim72/plugin/
vdebug
$ su -
# apt-get install php5-xdebug vim-nox
# cd /tmp
# git clone https://github.com/joonty/vdebug
# cp -ra vdebug/plugin/. /usr/share/vim/vim72/plugin/
# cp -ra vdebug/syntax/. /usr/share/vim/vim72/syntax/



Ejemplo 1: Sleep test

● Objetivo: Descubrir problemas por exceso de tiempo de
ejecución

● Prueba: Implementar una llamada sleep con el tiempo
de espera que necesitemos para emular el
comportamiento

● Conclusión: Funciones que tarden mucho tiempo en ser
ejecutadas son fácilmente identificables

● Solución: Evitar esperas. Son una fuente de race
conditions



Ejemplo 2: HTTP Request test

● Objetivo: Demostrar que las llamadas a recursos
externos son peligrosas si no se controlan

● Prueba: Implementar una llamada drupal_http_request
contra el callback que definimos antes para demostrarlo

● Conclusión: Las llamadas a servicios externos deben
controlarse

● Solución: Controlar los tiempos máximos de respuesta
en las llamadas (en curl: CURLOPT_CONNECTTIMEOUT)



Ejemplo 3: User list peak mem test

● Objetivo: Descubrir problemas por exceso de consumo
de memoria

● Prueba: Implementar una comprobación user_access en
hook_user, con un bucle de lectura de todos los usuarios
de la plataforma

● Conclusión: En general las llamadas node_load y/o
user_load son peligrosas cuando se ejecutan sobre un
listado de nodos y/o usuarios sin límite

● Solución: Evitar las llamadas a user_load / node_load al
recorrer nodos / usuarios



Ejemplo 4: taxonomy_get_children memory leak

● Objetivo: Descubrir problemas por exceso de consumo
de memoria

● Prueba: Implementar una llamada a
taxonomy_get_children pasando como argumento tid=0
con miles de términos de free tags creados

● Conclusión: Hay que controlar todos los casos de uso
posibles antes de llamar a taxonomy_get_children

●Solución: Evitar hacer llamadas a
taxonomy_get_children usando como parámetro tid = 0



Ejemplo 5: Ejemplo de depuración con xdebug

● Objetivo: Demostrar un ejemplo de uso de xdebug

● Prueba: Recorrer un listado de usuarios y comprobar
cómo las condiciones se cumplen para salir del bucle

● Conclusión: Los depuradores también son útiles para
los lenguajes interpretados



¿Quieres formar parte de nuestro equipo?

[email protected]

http://crononauta.com/

http://al.quimia.net/

Javier Carranza
[email protected]
twitter: @trunks
  • Links de descarga
http://lwp-l.com/pdf1514

Comentarios de: Depuración y profiling en Drupal: casos prácticos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad