Question

Je voudrais trouver un moyen de déterminer la durée d'exécution de chaque fonction en PHP et de chaque fichier en PHP. J'ai une ancienne application PHP que je suis en train d'essayer de trouver les "points difficiles". Je voudrais donc localiser quelles sont les routines et les pages qui prennent très longtemps à se charger, de manière objective.

Existe-t-il des outils prédéfinis qui permettent cela, ou suis-je bloqué en utilisant microtime et construisant mon propre cadre de profilage?

Était-ce utile?

La solution

J'ai en fait effectué des travaux d'optimisation la semaine dernière. XDebug est en effet la solution.

Activez-le simplement comme extension (pour une raison quelconque, cela ne fonctionnerait pas avec ze_extension sur ma machine Windows), configurez votre php.ini avec xdebug.profiler_enable_trigger = On et appelez vos URLs normales avec XDEBUG_PROFILE = 1 ou une variable de poste pour profiler cette demande même. Il n'y a rien de plus simple!

De plus, je peux vraiment recommander webgrind , une base de données Web (php) google Summer Of Code projet capable de lire et d’analyser vos fichiers de sortie de débogage!

Autres conseils

Voici un bon conseil.

Lorsque vous utilisez XDebug pour profiler votre PHP, configurez profiler_trigger et utilisez-le dans un bookmarklet pour déclencher le profileur XDebug;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}

jetez un coup d'œil à xdebug , qui permet de créer des profils détaillés. Et voici une explication sur l'utilisation de xdebug.

  

Le profileur de Xdebug est un outil puissant   cela vous donne la possibilité d'analyser   votre code PHP et déterminer   goulots d'étranglement ou voir généralement qui   des parties de votre code sont lentes et pourraient   utiliser un boost de vitesse. Le profileur dans   Xdebug 2 fournit des informations de profilage   sous la forme d'un cachegrind compatible   fichier.

Félicitations à SchizoDuckie pour en mentionnant Webgrind . C'est la première fois que j'en entends parler. Très utile (+1).

Sinon, vous pouvez utiliser kcachegrind sur linux ou son dérivé wincachegrind . Ces deux applications liront les fichiers de sortie du profileur de xdebug et les résumeront pour votre plus grand plaisir.

J'ai déjà vu une projection d'écran pour Zend Core . Ça a l'air bien, mais ça coûte vraiment de l'argent, je ne sais pas si c'est un problème pour vous.

XDebug est bien, mais ce n’est pas si facile à utiliser ou à configurer IMO.

Le profileur intégré à Zend Studio est très facile à utiliser. Vous venez d'appuyer sur un bouton de la barre d'outils du navigateur et BAM vous avez votre profil de code. C’est peut-être pas aussi profond qu’un dump CacheGrind, mais c’est toujours suffisant pour moi.

Vous devez également installer Zend Platform, mais c'est simple et gratuit pour une utilisation en développement - vous devez quand même payer pour la licence Zend Studio.

Les fonctions de profilage de xdebug sont plutôt bonnes. Si vous voulez que la sortie soit enregistrée au format valgrind, vous pouvez utiliser quelque chose comme KCachegrind ou Wincachegrind pour afficher le graphe des appels et, si vous êtes un type visuel, imaginez plus facilement ce qui se passe.

En plus de disposer de puissantes capacités de débogage en temps réel, PhpED de NuSphere (www.nusphere.com) possède un profileur intégré qui peut être exécuté en un seul clic à partir de l'EDI.

Si vous installez l'extension xdebug, vous pouvez le configurer pour exporter les profils d'exécution, que vous pouvez lire dans WinCacheGrind (sous Windows). Je ne me souviens pas du nom de l'application qui lit les fichiers sous Linux.

La solution la plus simple est d’utiliser Zend Profiler, vous n’avez pas besoin de la plate-forme Zend, vous pouvez l’exécuter directement à partir de votre navigateur, elle est assez précise et offre le plus grand nombre de fonctionnalités dont vous avez besoin et elle est intégrée à Zend Studio

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