<?php
/**
- * Show profiling data.
+ * Simple interface for displaying request profile data stored in
+ * the wikis' primary database.
+ *
+ * See also https://www.mediawiki.org/wiki/Manual:Profiling.
+ *
+ * To add profiling information to the database:
+ *
+ * - set $wgProfiler['class'] in LocalSetings.php to a Profiler class other than ProfilerStub.
+ * - set $wgProfiler['output'] to 'db' to force the profiler to save its the
+ * information in the database.
+ * - apply the maintenance/archives/patch-profiling.sql patch to the database.
+ * - set $wgEnableProfileInfo to true.
*
* Copyright 2005 Kate Turner.
*
ini_set( 'zlib.output_compression', 'off' );
-$wgEnableProfileInfo = false;
require __DIR__ . '/includes/WebStart.php';
header( 'Content-Type: text/html; charset=utf-8' );
if ( !$dbr->tableExists( 'profiling' ) ) {
echo '<p>No <code>profiling</code> table exists, so we can\'t show you anything.</p>'
. '<p>If you want to log profiling data, enable <code>$wgProfiler[\'output\'] = \'db\'</code>'
- . ' in your StartProfiler.php and run <code>maintenance/update.php</code> to'
+ . ' in LocalSettings.php and run <code>maintenance/update.php</code> to'
. ' create the profiling table.'
. '</body></html>';
exit( 1 );
global $sort;
switch ( $sort ) {
+ // Sorted ascending:
case 'name':
return strcmp( $a->name(), $b->name() );
+ // Sorted descending:
case 'time':
- return $a->time() > $b->time() ? -1 : 1;
+ return $b->time() <=> $a->time();
case 'memory':
- return $a->memory() > $b->memory() ? -1 : 1;
+ return $b->memory() <=> $a->memory();
case 'count':
- return $a->count() > $b->count() ? -1 : 1;
+ return $b->count() <=> $a->count();
case 'time_per_call':
- return $a->timePerCall() > $b->timePerCall() ? -1 : 1;
+ return $b->timePerCall() <=> $a->timePerCall();
case 'memory_per_call':
- return $a->memoryPerCall() > $b->memoryPerCall() ? -1 : 1;
+ return $b->memoryPerCall() <=> $a->memoryPerCall();
case 'calls_per_req':
- return $a->callsPerRequest() > $b->callsPerRequest() ? -1 : 1;
+ return $b->callsPerRequest() <=> $a->callsPerRequest();
case 'time_per_req':
- return $a->timePerRequest() > $b->timePerRequest() ? -1 : 1;
+ return $b->timePerRequest() <=> $a->timePerRequest();
case 'memory_per_req':
- return $a->memoryPerRequest() > $b->memoryPerRequest() ? -1 : 1;
+ return $b->memoryPerRequest() <=> $a->memoryPerRequest();
}
}
return htmlspecialchars(
'?' .
wfArrayToCgi( [
- 'filter' => $_filter ? $_filter : $filter,
- 'sort' => $_sort ? $_sort : $sort,
+ 'filter' => $_filter ?: $filter,
+ 'sort' => $_sort ?: $sort,
'expand' => implode( ',', array_keys( $_expand ) )
] )
);