¿Qué es "" una indicación de en Xdebug?


Tengo un perfil xdebug en un script php que analicé con kcachegrind. Aquí hay una captura de pantalla que muestra que la mayor parte del tiempo pasado dentro de una función dada se pasó dentro de <cycle 1> y los 'Llamantes' principales se hicieron desde 'include' y 'include_once' en index.php.

kcachegrind del perfil de xdebug mostrando el ciclo 1

Este perfil se ejecutó durante una prueba de estrés usando apache 'ab', por lo que hubo muchas conexiones simultáneas.

¿Qué indica <cycle 1> en un perfil xdebug?

Author: Matt Wallis, 2011-09-15

2 answers

Es detección de ciclo heurístico. Puede desactivarlo desde la barra de herramientas o desde el menú "Ver- > Detectar ciclos"o" Ver->Hacer detección de ciclos".

El ciclo es algo así como la recursión, tanto directa (f() -> f() -> f() donde -> significa llamada) como indirecta ( f()->g()->f()->g()->f())

El formato Callgring (utilizado en kcachegrind) no guarda la pila de llamadas completa, almacena solo los pares caller-callee y puede ser difícil restaurar ciclos más largos a partir de esta información

 35
Author: osgx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-21 11:10:15

Aunque @osgx menciona que puede desactivar la Detección de Ciclos, solo quería señalar aquí que si siente que <cycle 1> está ocultando algo de interés para usted, que probablemente debería desactivar la detección de ciclos como él explica.

Deshabilitar la detección de ciclos en mi caso reveló algunas piezas clave de información que faltaban antes.

 24
Author: Cory Klein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 20:04:26