Manual:Profiling/fr

Le profilage (profiling) suit l'exécution du code pendant l'action sur une page et fournit le pourcentage relatif du temps d'exécution dans chaque fonction spécifique. Le profilage est une tâche avancée pour les développeurs et les administrateurs système pour tracer les sources de ralentissement dans MediaWiki à optimiser.

Profilage PHP
Vous pouvez utiliser XHProf, qui est diponible à la fois pour HHVM et pour Zend PHP 5, et qui fournit le traçage et le profilage. C'est la manière dont fait le reste du monde PHP.

A partir de MediaWiki 1.29, vous pouvez aussi utiliser tideways qui en plus, prend en charge PHP 7. Tideways possède aussi une interface utilisateur propriétaire semblable pour visualiser les résultats, mais si vous suivez les instructions pour l'utilisation sans interface utilisateur, cela doit également bien fonctionner. En installant le paquetage Debian/Ubuntu  vous incluez également l'extension PHP.

Installer XHProf
Executez les commandes suivantes (en supposant que vous utilisez PHP 7.2; vous pouvez utiliser  pour vous repérer) :

Profilage personnalisé MediaWiki
Le profilage MediaWiki est configuré dans StartProfiler.php à la racine de votre wiki. Il existe aussi ici un fichier StartProfiler.sample qui vous permet également de démarrer.

En MediaWiki 1.25 le profilage a été complètement réécrit et beaucoup de paramètres qui avant étaient relatifs au profilage, ont été supprimés en faveur de leur consolidation comme paramètres de $wgProfiler. Notamment, la sortie a été séparée des types de classes. Pour la documentation concernant le profilage avant la version 1.25, voir une ancienne version de cette page.

Ceci est un fichier StartProfiler.php typique :

Chacun de ces paramètres (et plus) est décrit en détails :
 * class
 * 'ProfilerXhprof'. ProfilerXhprof est nouveau en MediaWiki 1.25 et fournit un profileur de type Xhprof qui capture des données de profilage pour toutes les fonctions et les sous-unités fonctionnelles. Les anciennes valeurs telles que ProfilerStandard, ProfilerUDP, ProfilerDB, etc ne fonctionnent pas. Même si vous utilisez Tideways, spécifiez encore la classe ProfilerXhprof.


 * output
 * Une ou plusieurs valeurs parmi 'udp', 'text', 'db', 'dump' .  génère l'information soit sous forme de commentaires HTML ou après l'habillage.   nécessite que la table de profilage soit crée et enregistre les données des exécutions profilées individuelles.   est un format d'envoi pour un démon udpprofile.   vide les données de profilage pour être utilisées avec l'interface graphique utilisateur xhprof (rôle xhprofgui dans les paramètres Vagrant). Les classes de sortie à votre disponibilté sont : ProfilerOutputDb, ProfilerOutputDump, ProfilerOutputStats, ProfilerOutputText, et ProfilerOutputUdp. La manière dont cela fonctionne avec les valeurs 'udp', 'text', 'db', 'dump' n'est pas très claire!


 * outputDir
 * Ne s'applique qu'au format 'dump'. Nécessaire pour spécifier où les fichiers de vidage seront enregistrés.


 * perHost
 * Ne concerne que le format 'db'. Indique où seront enregistrées les informations de l'hôte pour les exécutions profilées.


 * udphost
 * Ne concerne que le format 'udp'. Hôte ou adresse IP vers laquelle les données sont envoyées.


 * udpport
 * Ne concerne que le format 'udp'. Port vers lequel envoyer les données.


 * udpformat
 * Ne concerne que le format 'udp'. Chaîne de format à utiliser. Habituellement laissée telle quelle.


 * visible
 * Ne concerne que le format 'text'. Indique si le texte est affiché après l'habillage ou dans un commentaire HTML.

Résolution des problèmes
Si vous obtenez l' « Erreur fatale : Exception non récupérée : ni xhprof ni tideways ne sont installés » alors voici ce que vous devez faire :

Sortie
La sortie texte ressemble à : La première colonne est le pourcentage du temps; la seconde représente le temps passé (en ms); la troisième est le coût; et la quatrième est le nom de la méthode.