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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Comment jouer le profiler dans le code ? [Fait]


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    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 Images attachées  
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    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

  3. #3
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    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 !...

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    c'est sympa alors

    merci pour ta contribution

  5. #5
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    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 !...

  6. #6
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    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°

  7. #7
    Membre actif
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Points : 226
    Points
    226
    Par défaut
    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

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    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 !...

  9. #9
    Invité
    Invité(e)
    Par défaut
    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 !

  10. #10
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 !...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 60
    Points
    60
    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.

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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 ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    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

  14. #14
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !..

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    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)

  16. #16
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    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 !...

  17. #17
    Invité
    Invité(e)
    Par défaut
    Chez moi ces quelques lignes de config suffisent à faire fonctionner le profiler de xdebug (à ajouter à la fin du fichier php.ini) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [xdebug]
    xdebug.profiler_enable = "1"
    xdebug.profiler_output_dir = "c:/tmp"
    Le répertoire doit être créé manuellement.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    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

Discussions similaires

  1. [conception]Comment mettre un profiler dans son code?
    Par EvaristeGaloisBis dans le forum C++
    Réponses: 7
    Dernier message: 09/03/2013, 11h48
  2. Comment avoir un RC dans le code source ?
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2007, 15h53
  3. Comment Jouer du son dans une application
    Par condor_01 dans le forum Multimédia
    Réponses: 3
    Dernier message: 28/07/2006, 10h26
  4. Comment importer une DLL dans du code???
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 29
    Dernier message: 19/04/2006, 19h19
  5. Comment jouer des sons dans un programme ???
    Par aldur_disciple dans le forum MFC
    Réponses: 8
    Dernier message: 17/08/2005, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo