IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Astuce PHP : Utiliser le profiler Xdebug pour ses scripts

Le , par berceker united

0PARTAGES

1  0 
Il y a une extension assez utile pour savoir pour pouvoir traquer les zones à optimiser. Cette extension c'est Xdebug. Celui-ci permet de connaitre avec beaucoup de précision les détails d'execution de script en plus, lorsqu'il y a une erreur de script elle donne plus de détails que le simple "parse error".
Voici la procédure d'installation :
  1. - Allez sur le stie de Xdebug et télécharger la version correspondante. Normalement pour la version php5 dans windows ça doit être ce fichier : php_xdebug-5.1.2-2.0.0beta6.dll
  2. - Placer l'extension dans le répertoires de extensions php.
  3. - Allez dans le fichier php.ini et ajouter ces lignes
    zend_extension_ts = "c:/http/php/ext/php_xdebug-5.1.2-2.0.0beta6.dll"
    xdebug.remote_autostart = 1
    xdebug.profiler_enable = 1
    xdebug.auto_profile = 1
    xdebug.profiler_output_dir = "C:/HTTP/php/tmp"
  4. - Redémarrer Apache et regardez dans le phpinfo() si xdebug à bien été détecté.
  5. - Executer un script php.
  6. - Allez dans le répertoire temporaire que vous avez déclarer dans le php.ini et vous devriez voir un fichier dans ce format : cachegrind.out.xxxxxxxxxxx. Directement ce fichier n'est pas très lisible. Pour que le fichier puisse être plus parlant il faut télécharger WinCachGrind pour la version Windows et KCacheGrind pour la version Linux.
  7. - Très simplement, il suffit de charger le fichier générer dans l'un des deux programmes ci-dessus et vous verrez des informations assez complètes.


J'ai oublié de précisez qu'apparement celui-ci ne fonctionne que sur les serveurs Apache. Sur IIS ça n'a pas l'air de fonctionner.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de mathieu
Expert éminent sénior https://www.developpez.com
Le 18/09/2006 à 10:58
Est ce que tu as plus de détails sur la license ? elle est à l'adresse suivante mais en anglais donc je suis pas bien placé pour dire si c'est proche du libre ou non
http://www.xdebug.org/license.php

par contre pour WinCachGrind et KCacheGrind j'ai trouvé : ils sont sous licence GPL
0  0 
Avatar de berceker united
Expert éminent https://www.developpez.com
Le 18/09/2006 à 11:08
Citation Envoyé par mathieu
Est ce que tu as plus de détails sur la license ? elle est à l'adresse suivante mais en anglais donc je suis pas bien placé pour dire si c'est proche du libre ou non
http://www.xdebug.org/license.php

par contre pour WinCachGrind et KCacheGrind j'ai trouvé : ils sont sous licence GPL
Pour Xdebug si j'ai bien compris le code source est libre mais à condition que ça soit précisé. Concernant les deux applications ils sont effectivement sous GPL chose à préciser.
0  0 
Avatar de mathieu
Expert éminent sénior https://www.developpez.com
Le 18/09/2006 à 11:23
c'est sympa alors

merci pour ta contribution
0  0 
Avatar de berceker united
Expert éminent https://www.developpez.com
Le 18/09/2006 à 11:35
De rien, je pense que ça va en servir à plus d'un
0  0 
Avatar de kankrelune
Membre éclairé https://www.developpez.com
Le 27/09/2006 à 13:42
Je m'en sers depuis un peu plus d'un an et franchement c'est de la bombe pour... le profiling/optimisation du code, le coverage y a pas mieux... seul hic elle n'est pas compatible avec le zend optimiser mais sur un serveur de dev c'est pas bien grave... .. .

@ tchaOo°
0  0 
Avatar de SegmentationFault
Membre actif https://www.developpez.com
Le 23/10/2006 à 16:49
merci bcp berceker united pour ton message. Je connaissais pas cette bibliotheque avant (ca ne fait pas longtemps que je fais du php non plus) mais la je l'ai installé, et elle est très utile
0  0 
Avatar de berceker united
Expert éminent https://www.developpez.com
Le 23/10/2006 à 18:22
de rien.
Petit précision. A ne pas utiliser sur une serveur de prod j'ai constaté quelques lenteur.
0  0 
Avatar de
https://www.developpez.com
Le 23/10/2006 à 20:40
Ouais très sympa comme extension pour le profiling, en plus elle ajoute une coloration syntaxique pour les var_dump() ... C'est rien, mais ça préserve des yeux !
0  0 
Avatar de berceker united
Expert éminent https://www.developpez.com
Le 24/10/2006 à 10:39
Concernant les temps affiché, elle ne révèle pas réellement la réalité. C'est très difficile d'estimer le temps. Donc il ne faut pas avoir peur concernant le temps affiché. Néanmoins, cela donne juste une estimation et un rapport de temps entre deux fichiers et voir les zones plus gourmandes.
La gourmandise n'est pas la même chose que la voracité.
La gourmandise : C'est par exemple la connexion a un fichier, db, ... c'est naturelement gourmand car c'est un system exterieur donc php attend.
Voracité : C'est par exemple une boucle qui tourne inutilement. Vous voulez tester la présence d'un mot dans un tableau donc il y a for ou un while et dans cette boucle il y a if.
Code : Sélectionner tout
1
2
3
4
5
while(...){
  if(arg1==arg2){
  }
}
Lorsqu'on rentre dans le if bien souvent certain laisse la boucle se terminer alors qu'il aurait fallut placer un break pour sortir de la boucle. Concernant l'exemple si c'est un tableau à une dimension in_array() permet de faire du light .
0  0 
Avatar de pat06
Membre du Club https://www.developpez.com
Le 19/01/2008 à 14:13
Bonjour,

Je viens de parcourir cet article et il me semble très interessant. J'ai suivi la procédure pour installation et cela ne me donne rien. Je suis un peu bourrin.

Où doit-on placer les lignes dans le php.ini plus exactement dans quelle section []?
Ou peut-on les ajouter en fin du php.ini comme je l'ai fait puisque dans la théorie les sections sont ignorées.

Doit-on mettre "zend.ze1_compatibility_mode = Off" à ON même en étant sous PHP5

Le répertoire C:\HTTP\php\temp doit-il être créé au préalable ou la dll le créera automatiquement

Enfin lorsque je lance mon phpinfo() dans quelle rubrique je vois si xdebug a été détecté. sagit-il du debug build

Merci de m'éclairer car j'ai grandement besoin d'optimiser mes scripts.
0  0