Qu’est-ce que “” indique dans Xdebug?

J’ai un profil xdebug sur un script php que j’ai analysé avec kcachegrind. Voici une capture d’écran montrant que le plus de temps passé à l’intérieur d’une fonction donnée a été passé à l’intérieur de et que les premiers “Callers” ont été créés à partir de “include” et “include_once” dans index.php.

kcachegrind du profil de xdebug montrant le cycle 1

Ce profil a été exécuté lors d’un test de stress utilisant apache ‘ab’, il y avait donc beaucoup de connexions simultanées.

Qu’est-ce que indique sur un profil xdebug?

C’est une détection de cycle heuristique. Vous pouvez le désactiver à partir de la barre d’outils ou à partir du menu “Affichage-> Détecter les cycles” ou “Affichage-> Ne pas détecter le cycle”.

Le cycle est quelque chose comme la récursivité, à la fois directe ( f() -> f() -> f()-> signifie appel) et indirect ( f()->g()->f()->g()->f() )

Le format callgring (utilisé dans kcachegrind) n’enregistre pas la stack d’appels complète, il ne stocke que les paires caller-callee et il peut être difficile de restaurer des cycles plus longs à partir de ces informations.

Bien que @osgx mentionne que vous pouvez désactiver la détection de cycle, je voulais juste signaler ici que si vous sentez que cache quelque chose qui vous intéresse, vous devriez probablement désactiver la détection de cycle comme il l’explique.

La désactivation de la détection de cycle dans mon cas a en fait révélé certaines informations clés manquantes auparavant.