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 le reste du monde PHP fait.

A partir de MediaWiki 1.29, vous pouvez aussi utiliser tideways qui en plus, prend en charge PHP 7. Tideways also advertises a seemingly proprietary UI to visualize results, but if you follow the instructions for without the UI, it should be fine. Installing the  Debian/Ubuntu package also just includes the PHP extension.

Installer XHProf
Execute the following commands (assuming you're using PHP 7.2; you can use  to find out):

Profilage personnalisé MediaWiki
MediaWiki profiling is configured in StartProfiler.php in the root of your wiki. There's a StartProfiler.sample file there to get you started as well.

In MediaWiki 1.25 profiling was completely rewritten and many settings previous relating to profiling were removed in favor of consolidating them as parameters to $wgProfiler. Notably, output has been separated from class types. For documentation about profiling prior to 1.25, see an older version of this page.

Ceci est un fichier StartProfiler.php typique :

Each of these parameters (and more) are described in detail:
 * class
 * 'ProfilerXhprof'. ProfilerXhprof is new in MediaWiki 1.25 and provides an Xhprof-backed profiler that captures profiling data for all functions as well as sub-functional units. Old values such as ProfilerStandard, ProfilerUDP, ProfilerDB, etc do not work. Even if you are using Tideways, still specify the ProfilerXhprof class.


 * output
 * One or more of 'udp', 'text', 'db', 'dump' . Text outputs the information in either HTML comments or after the skin. 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
If you get "Fatal error: Uncaught Exception: Neither xhprof nor tideways are installed" then you need to do:

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.