it-swarm-es.com

Necesita imprimir todas las llamadas a funciones Drupal hace

Necesito examinar todas las llamadas a funciones Drupal realiza durante la carga de una página (incluso si no hay errores). Supongo que el software de depuración puede hacer esto, pero también me gustaría saber una forma de hacer esto sin xdebug, etc.

Encontré este enlace: https://drupal.stackexchange.com/questions/545/how-to-debug-drupal pero no estoy seguro de dónde poner, por ejemplo, este código:

<?php
$bt = debug_backtrace();
foreach ($bt as $key => $value) {
  if ($key == 0) {
    continue;
  }
  unset($bt[$key]['args']);
  unset($bt[$key]['object']);
}
drupal_set_message(str_replace('    ', '&nbsp;&nbsp;&nbsp;&nbsp;', nl2br(htmlentities(print_r($bt, TRUE)))));
?>
3
jjei

Recomendaría usar Xdebug en lugar de cualquier otro método.

Xdebug se puede instalar fácilmente y luego todo lo que tiene que hacer es habilitar la creación de perfiles y navegar por su sitio.

No solo enumera todas las llamadas a funciones, sino que cuenta cuántas veces se llama cada una durante una solicitud y también las veces que se llama a la función, para que sepa exactamente dónde buscar resolver cuellos de botella.

Los resultados se pueden ver usando Webgrind (basado en navegador) o KCacheGrind (KDE/linux), entre otros.

Esto es más eficiente porque no está manipulando el código y ensuciándolo con declaraciones de depuración.

4
Alex Weber

El número de llamadas a funciones durante una sola vista de página puede ser bastante. No sé el número, pero supongo que son varios miles. Si desea registrar todos estos datos, no debe publicarlos en la pantalla, sino escribirlos en un archivo, como la función dd que tiene el módulo devel.

Si desea registrar todas las llamadas a funciones, debe comenzar por el final, esa última función que se llama en una página drupal. Una de las últimas funciones donde puede comenzar es drupal_page_footer. Puedes agregar el debug_backtrace en esa función.

Entonces tendría que pasar por todas las funciones y agregar debug_backtrace para todas las funciones que esas funciones llaman. Entonces tendría que pasar por todas las nuevas funciones enumeradas en el debug_backtrace que acaba de agregar y repita el paso anterior hasta que usted o su computadora se atragante.

Es posible hacer esto, pero para obtener algo útil necesitará una herramienta de perfil, que puede hacer todo esto en segundos en lugar de horas. Aquí es donde las computadoras se destacan: recursividad.

1
googletorp

Si necesita imprimir todas las llamadas a funciones (por ejemplo, solo sus nombres separados por comas), intente:

print implode(', ', array_column(debug_backtrace(), 'function'));

Nota: array_column() es parte de PHP> = 5.5.0

0
kenorb