Manual:Profiling/fr

Le profilage 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' . Le texte génère l'information soit sous forme de commentaires HTML ou après l'habillage. DB requires the profiling table to be created and stores data on individual profiling runs. UDP is a format send to a udpprofile daemon. Dump produces a dump of the profiling info for use with xhprof GUI (xhprofgui role on Vagrant setup). The output classes available to you by default are ProfilerOutputDb, ProfilerOutputDump, ProfilerOutputStats, ProfilerOutputText, and ProfilerOutputUdp. How that works together with the values 'udp', 'text', 'db', 'dump' is unclear!


 * outputDir
 * Only applies to 'dump' format. Required to specify where the dump files will be stored.


 * perHost
 * Only applies to 'db' format. Whether to store host information with profiling runs.


 * udphost
 * Only applies to 'udp' format. Host/IP to send data to.


 * udpport
 * Only applies to 'udp' format. Port to send data to.


 * udpformat
 * Only applies to 'udp' format. Format string to use. Can usually be left alone.


 * visible
 * Only applies to 'text' format. Whether text is shown after the skin or in an HTML comment.

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 à : The first column is the time percent; the second column is the time (in ms); the third column is the count; and the fourth column is the name of the method.