Précédent   Forum des professionnels en informatique > PHP > Langage > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc. pour PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 18/09/2006, 10h44   #1
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Par défaut Comment jouer le profiler dans le code ?

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.
Images attachées
Type de fichier : jpg wincachegrind.jpg (74,3 Ko, 145 affichages)
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 10h58   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 11h08   #3
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
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.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 11h23   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
c'est sympa alors

merci pour ta contribution
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 11h35   #5
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
De rien, je pense que ça va en servir à plus d'un
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 13h42   #6
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
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°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 16h49   #7
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
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
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 18h22   #8
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
de rien.
Petit précision. A ne pas utiliser sur une serveur de prod j'ai constaté quelques lenteur.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 20h40   #9
Rédacteur
 
Homme Jean-Pierre
Inscription : août 2005
Messages : 333
Détails du profil
Informations personnelles :
Nom : Homme Jean-Pierre
Âge : 26
Localisation : Suisse

Informations forums :
Inscription : août 2005
Messages : 333
Points : 442
Points : 442
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 !
Guardian_7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2006, 10h39   #10
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
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 :
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 .
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 14h13   #11
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 95
Points : 28
Points : 28
Par défaut installation du php_xdedug dans php ini

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.
pat06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 15h27   #12
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Citation:
Envoyé par pat06 Voir le message
Doit-on mettre "zend.ze1_compatibility_mode = Off" à ON même en étant sous PHP5
Une directive inutile est ignorée, donc tu peux mettre cette directive sans problème.

Citation:
Envoyé par pat06 Voir le message
Le répertoire C:\HTTP\php\temp doit-il être créé au préalable ou la dll le créera automatiquement
J'imagine que, dans le doute, tu l'as créé ? La question n'a donc plus lieu d'être
Pense que si l'extension doit vérifier à chaque chargement si elle doit créer le répertoire, c'est une perte inutile de ressources. La configuration du php.ini doit correspondre à un système en état de marche.

Citation:
Envoyé par pat06 Voir le message
Enfin lorsque je lance mon phpinfo() dans quelle rubrique je vois si xdebug a été détecté. sagit-il du debug build
J'imagine que la fonction "Ctrl+F" existe dans ton navigateur ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 16h51   #13
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 95
Points : 28
Points : 28
Ok il semble que tout est correctement en place et pourtant je n'ai aucun fichier cachegrind.out.xxx dans le répertoire temp et dans mon phpinfo je ne vois nul part de xdebug.

D'autre part je ne comprends pas ta réponse :

J'imagine que la fonction "Ctrl+F" existe dans ton navigateur ? A quoi fais-tu allusion?

Pour info l'extension que j'ai installée se nomme php_xdebug-2.0.2-5.2.5.dll
pat06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 16h58   #14
Rédacteur
 
Homme Jean-Pierre
Inscription : août 2005
Messages : 333
Détails du profil
Informations personnelles :
Nom : Homme Jean-Pierre
Âge : 26
Localisation : Suisse

Informations forums :
Inscription : août 2005
Messages : 333
Points : 442
Points : 442
Citation:
Envoyé par pat06 Voir le message
Ok il semble que tout est correctement en place et pourtant je n'est aucun fichier cachegrind.out.xxxde créer et dans mon phpinfo je ne vois nul part de xdebug.

D'autre part je ne comprends pas ta réponse :

J'imagine que la fonction "Ctrl+F" existe dans ton navigateur ?

Pour info l'extension que j'ai porte le nom de php_xdebug-2.0.2-5.2.5.dll
Hello,

As-tu activé explicitement l'extension Xdebug dans ton php.ini ?

Code :
1
2
 
extension=php_xdebug.dll
Je précise que ton php_xdebug-2.0.2-5.2.5.dll doit être renommé en conséquence php_xdebug.dll.

Je précise aussi que cette étape n'a pas été mentionnée dans la procédure d'installation ci-dessus . Et pourtant !..
__________________
Mes articles DVP : http://jp-grossglauser.developpez.com
Guardian_7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 17h42   #15
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 95
Points : 28
Points : 28
Merci.
J'avais bien renommé l'extension mais oublié de l'activer dans le php.ini
Donc maintenant j'ai bien le Xdebug dans phpinfo. Mon répertoire temporaire est bien créé mais je n'ai toujours pas de fichier cachegrind.out.xxx qu'est-ce que j'ai bien pu encore oublier? (si je n'abuse pas trop)
pat06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 18h06   #16
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par pat06 Voir le message
Merci.
J'avais bien renommé l'extension mais oublié de l'activer dans le php.ini
Donc maintenant j'ai bien le Xdebug dans phpinfo. Mon répertoire temporaire est bien créé mais je n'ai toujours pas de fichier cachegrind.out.xxx qu'est-ce que j'ai bien pu encore oublier? (si je n'abuse pas trop)
Il faut préciser le répertoire de sortie.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 18h35   #17
Rédacteur
 
Homme Jean-Pierre
Inscription : août 2005
Messages : 333
Détails du profil
Informations personnelles :
Nom : Homme Jean-Pierre
Âge : 26
Localisation : Suisse

Informations forums :
Inscription : août 2005
Messages : 333
Points : 442
Points : 442
Chez moi ces quelques lignes de config suffisent à faire fonctionner le profiler de xdebug (à ajouter à la fin du fichier php.ini) :

Code :
1
2
3
4
 
[xdebug]
xdebug.profiler_enable = "1"
xdebug.profiler_output_dir = "c:/tmp"
Le répertoire doit être créé manuellement.
__________________
Mes articles DVP : http://jp-grossglauser.developpez.com
Guardian_7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 19h21   #18
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 95
Points : 28
Points : 28
Merci à vous çà fonctionne enfin. Pour cela j'ai viré du php.ini la ligne :

zend_extension_ts = "c:/http/php/ext/php_xdebug.dll"

Tout va donc bien je vais pouvoir je l'espère paufiner mes scripts

Encore merci
pat06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h29.


 
 
 
 
Partenaires

Hébergement Web