web-dev-qa-db-fra.com

Quelle est la meilleure façon de surveiller PHP fonctions/exécutions?

J'essaie de trouver le meilleur moyen de surveiller le code/les fonctions PHP, les requêtes MySQL et/ou les plugins qui ralentissent les pages d'un site.

Je sais qu'il existe de nombreuses options, y compris des plugins WordPress et des solutions impliquant firebug (firephp), mais quelle est selon vous la meilleure approche?

Personnellement, je pense que la solution idéale serait d’avoir un type de code qui puisse être installé par défaut avec chaque installation de wordpress. Tout débogage/surveillance/création de rapport ne sera exécuté que si vous ajoutez une entrée facultative à la fin de l'URL telle que? = Debug. Pour des raisons de sécurité, il serait même préférable de se connecter d'abord à la zone d'administration de wordpress et de créer une clé de débogage temporaire créant une clé hachée et de l'ajouter à l'URL (par exemple, debugkey = v09098v09aq2ov1a8923) qui ne serait disponible 30 minutes.

Mais pour en revenir aux informations de débogage réelles ... j’estime que l’utilisation de firebug est utile dans de nombreuses situations, mais j’estime utile de pouvoir ajouter quelque chose d’autre à une URL qui recouvrirait par exemple toutes les fonctions, les hooks ou les filtres utilisés. sur une page spécifique avec le temps d'exécution pour chacun.

En tout cas ... j'ai pensé que beaucoup d'entre vous ici ont dû faire face à ces problèmes aussi et j'apprécierais donc toutes les solutions que vous utilisez pour résoudre vos problèmes.

Veuillez décrire comment les éléments spécifiques pour les autres qui pourraient lire ceci, en décrivant les éléments spécifiques à l’installation et comment l’utiliser correctement.

UPDATEDExécution d'un serveur Linux dédié

6
NetConstructor.com

Il existe de nombreux outils et possibilités et il serait bien d’avoir quelque chose de rapide sous la main. Je connais des auteurs de plug-in qui offrent des indicateurs de débogage afin que vous puissiez analyser ce qui se passe assez facilement.

En ce qui concerne les plugins, je ne l’ai pas testé, mais j’ai jeté un œil à quelques captures d’écran et il est au moins informatif: Barre de débogage (Plugin Wordpress) et la barre de débogage BlackBox (Plugin Wordpress) .

Un autre est un hooktracer qui n'est pas très connu: SJ Hook Profiler .

Je recommande fortement xdebug pour les systèmes de développement et de test, c'est un plaisir de l'avoir si vous avez besoin de profiler ou de déboguer des éléments.

5
hakre

XHProf (open source, une partie de la pile de Facebook pour la surveillance de leurs performances) est difficile à installer (du moins pour les utilisateurs de Windows comme moi), mais c’est un outil de profileur de performances très complet et très pratique pour PHP.

Je souhaite qu'il avait la version gagnante pour ma pile de test locale. :(

2
Rarst

Je ne peux que recommander la classe php Krumo qui peut être ajouté en moins de 10 secondes à toute installation et ne dépend d'aucune installation locale. Ainsi, même si vous êtes en déplacement, vous avez un outil de débogage avec vous. Assurez-vous simplement de le charger après tout autre fichier et de le charger avec if ( current_user_can('manage_options') ) krumo::enable(); afin qu'aucun invité ou autre utilisateur ne se retrouve dans vos messages en attente si vous déboguez quelque chose qui est déjà en ligne.

2
kaiser

Vous n'indiquez pas quel est votre arrangement de serveur. Si vous êtes dans un environnement d'hébergement partagé, vos options sont limitées. S'il s'agit de votre propre serveur, vous pouvez installer divers outils de profilage pour obtenir une vue d'ensemble. Regardez ce fil sur SO pour certaines options.

En outre, la lenteur de la page livrée peut être le résultat de nombreuses choses, dont quelques-unes seulement sont liées à PHP/MySQL. Vous pouvez avoir des problèmes de DNS, une congestion nette du côté client ou serveur, des pages mal planifiées sur lesquelles beaucoup de JS se chargent tôt plutôt que tard, etc.

Pour tester la chaîne alimentaire fondamentale de la connexion réseau + la livraison au serveur de la page HTML de base, essayez d'utiliser le programme Apache Benchmark . Prudent! Vous pouvez vaincre les pièges d'un serveur avec ce chiot et votre hébergeur ne sera pas amusé si vous imitez une attaque à la fois par le DOS sur leur ordinateur.

Mise à jour: OK, un serveur Linux dédié vous donne des options importantes. En particulier, je vais doubler xdebug et sa capacité à profiler l'exécution de votre code. Il est étonnant de voir à quelle vitesse quelques profils sous un profileur peuvent faire la lumière sur une fonction innocente qui ronge la machine.

Si rien ne vous vient immédiatement à l'esprit, cherchez des routines qui semblent prendre plus de temps qu'elles ne le devraient (ce que que signifie signifie) et/ou qui semblent se faire appeler beaucoup. Ce dernier peut souvent être corrigé en mettant simplement en cache les résultats de certaines valeurs. S'il s'agit d'un problème général impliquant différentes fonctions coûteuses appelées avec des paramètres différents, vous pouvez consulter mémoriser les fonctions affectées. Je l'ai fait plusieurs fois en Python, mais pas en PHP. Voici un article sur l'approche de one person . Il y a plus de messages sur ce sujet.

1
Peter Rowell