To save the profiling information in the database (required to use this
script), you have to modify StartProfiler.php to use the Profiler class and
not the stub profiler which is enabled by default.
- You will also need to set $wgProfileToDatabase to true in LocalSettings.php
+ You will also need to set $wgProfiler['output'] to 'db' in LocalSettings.php
to force the profiler to save the informations in the database and apply the
maintenance/archives/patch-profiling.sql patch to the database.
}
}
+ /**
+ * Enable profiling table when it's turned on
+ */
+ protected function doEnableProfiling() {
+ global $wgProfiler;
+
+ if ( !$this->doTable( 'profiling' ) ) {
+ return true;
+ }
+
+ $profileToDb = false;
+ if ( isset( $wgProfiler['output'] ) ) {
+ $out = $wgProfiler['output'];
+ if ( $out === 'db' ) {
+ $profileToDb = true;
+ } elseif( is_array( $out ) && in_array( 'db', $out ) ) {
+ $profileToDb = true;
+ }
+ }
+
+ if ( $profileToDb && !$this->db->tableExists( 'profiling', __METHOD__ ) ) {
+ $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
+ }
+ }
+
/**
* Rebuilds the localisation cache
*/
}
}
- protected function doEnableProfiling() {
- global $wgProfileToDatabase;
-
- if ( !$this->doTable( 'profiling' ) ) {
- return true;
- }
-
- if ( $wgProfileToDatabase === true && !$this->db->tableExists( 'profiling', __METHOD__ ) ) {
- $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
- }
- }
-
protected function doMaybeProfilingMemoryUpdate() {
if ( !$this->doTable( 'profiling' ) ) {
return true;
$this->output( "...fulltext search table appears to be in order.\n" );
}
}
-
- protected function doEnableProfiling() {
- global $wgProfileToDatabase;
- if ( $wgProfileToDatabase === true && !$this->db->tableExists( 'profiling', __METHOD__ ) ) {
- $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
- }
- }
}
ini_set( 'zlib.output_compression', 'off' );
-$wgEnableProfileInfo = $wgProfileToDatabase = false;
+$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>$wgProfileToDatabase</code>'
- . ' in your LocalSettings.php and run <code>maintenance/update.php</code> to'
+ . '<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'
. ' create the profiling table.'
. '</body></html>';
exit( 1 );
* @todo Currently only checks list of tables
*/
public function testUpgrades() {
- global $IP, $wgVersion, $wgProfileToDatabase;
+ global $IP, $wgVersion, $wgProfiler;
// Versions tested
$versions = array(
$currentDB = new DatabaseSqliteStandalone( ':memory:' );
$currentDB->sourceFile( "$IP/maintenance/tables.sql" );
- if ( $wgProfileToDatabase ) {
+
+ $profileToDb = false;
+ if ( isset( $wgProfiler['output'] ) ) {
+ $out = $wgProfiler['output'];
+ if ( $out === 'db' ) {
+ $profileToDb = true;
+ } elseif( is_array( $out ) && in_array( 'db', $out ) ) {
+ $profileToDb = true;
+ }
+ }
+
+ if ( $profileToDb ) {
$currentDB->sourceFile( "$IP/maintenance/sqlite/archives/patch-profiling.sql" );
}
$currentTables = $this->getTables( $currentDB );