Question

Ma question est basée sur cet article .

Comment pouvez-vous les données de profilage d'un code PHP par Xdubug2 puis le mettre à une application comme KCacheGrind?

Je l'ai utilisé avec succès Xdebug dans mon Ubuntu, car il met en évidence mes messages d'erreur dans le navigateur. Cependant, je trouve pas un outil de terminal comme xdebug.

Je voudrais avoir une vue visuelle de mon code PHP comme ceci

text alt

Était-ce utile?

La solution

Ajoutez cette ligne à votre php.ini

xdebug.profiler_enable = 1

Alors, si vous arrive d'exécuter PHP via un serveur web, vous devez redémarrer le serveur Web, sinon le changement ne conf pris.

Si vous utilisez PHP par cli, puis bien sûr pas de redémarrage est nécessaire.

Maintenant, lorsque vous exécutez votre script PHP, un fichier cachegrind.out.PID est créé dans le répertoire spécifié par php.ini xdebug.profiler_output_dir. Il est / tmp par défaut.

Ce fichier est celui kcachegrind est capable de charger.

Il existe d'autres moyens pour invoquer cette génération de profil, vous pouvez lire les http: / /www.xdebug.org/docs/all_settings#profiler_enable

Autres conseils

Jetez un oeil à WebGrind ( http://code.google.com/p/webgrind/ )

Je suis tombé sur une situation similaire où je ne ai eu accès à un terminal et non environnement visuel sur lequel tester. Pire encore, j'utilisais une machine de fenêtres et Putty.

Les solutions disponibles sont

  1. Installation WebGrind ( http://code.google.com/p/webgrind/)
  2. Exécution Xdebug et copier les fichiers cachegrind.out sur une machine où vous avez une visionneuse cachegrind.

Pour moi, la réponse était de SCP les fichiers cachegrind sur ma machine windows locale, et en utilisant WinCachegrind pour les regarder. Vous pouvez les SCP sur votre boîte de linux et lancez KCacheGrind sur les fichiers. L'inconvénient de cela, est que vous ne pouvez pas avoir la même structure de fichiers, de sorte que vous ne serez pas en mesure d'afficher le code source. Si vous avez la source également sur votre machine locale, ou pouvez l'obtenir là-bas, vous pouvez corriger cela aussi. Ouvrez les fichiers cachegrind dans vim (ou tout autre éditeur) et faire une recherche globale et remplacer les chemins de les changer sur le chemin de la source correcte sur votre machine locale.

J'espère que c'est ce que vous recherchez.

EDIT à l'adresse commentaire:

Si vous travaillez pour obtenir un fichier callgrind qui est quelque peu différente. Pour cela, vous devez être en cours d'exécution sous Linux (que je pense que vous êtes) et que les programmes de Callgrind et valgrind disponibles. La dernière chose que de supposer ici est que vous utilisez PHP comme un mod Apache et non d'une autre façon. Utilisez l'outil de callgrind contre le départ de apache puis exécutez la requête dans le navigateur. Cela vous donnera des informations détaillées non seulement sur l'arbre d'appel php, mais aussi sur beaucoup de choses dans Apache qui peuvent causer des problèmes.

ici est un exemple de la

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

Le -X commencera apache en mode débogage avec un seul fil. De là, ouvrez un navigateur Web et cliquez sur le script php que vous voulez. Ensuite, revenir en arrière et apache d'arrêt. Cela devrait également mettre fin à l'analyse syntaxique de callgrind.

Si vous n'avez pas besoin apache ou d'un navigateur Web, vous pouvez essayer d'exécuter callgrind avec juste la commande php

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Cela devrait vous donner les mêmes résultats, mais sans tous les trucs apache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top