* @defgroup Maintenance Maintenance
*/
-// Make sure we're on PHP5.3.2 or better
-if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.3.2' ) < 0 ) {
+// Make sure we're on PHP5.3.3 or better
+if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.3.3' ) < 0 ) {
// We need to use dirname( __FILE__ ) here cause __DIR__ is PHP5.3+
require_once dirname( __FILE__ ) . '/../includes/PHPVersionError.php';
wfPHPVersionError( 'cli' );
*/
public $fileHandle;
+ /**
+ * Accessible via getConfig()
+ *
+ * @var Config
+ */
+ private $config;
+
/**
* Default constructor. Children should call this *first* if implementing
* their own constructors
$this->addOption( 'server', "The protocol and server name to use in URLs, e.g. " .
"http://en.wikipedia.org. This is sometimes necessary because " .
"server name detection may fail in command line scripts.", false, true );
- $this->addOption( 'profiler', 'Set to "text" or "trace" to show profiling output', false, true );
+ $this->addOption( 'profiler', 'Profiler output format (usually "text")', false, true );
# Save generic options to display them separately in help
$this->mGenericParameters = $this->mParams;
$this->mDependantParameters = array_diff_key( $this->mParams, $this->mGenericParameters );
}
+ /**
+ * @since 1.24
+ * @return Config
+ */
+ public function getConfig() {
+ if ( $this->config === null ) {
+ $this->config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+
+ return $this->config;
+ }
+
+ /**
+ * @since 1.24
+ * @param Config $config
+ */
+ public function setConfig( Config $config ) {
+ $this->config = $config;
+ }
+
/**
* Run a child maintenance script. Pass all of the current arguments
* to it.
}
}
+ /**
+ * Activate the profiler (assuming $wgProfiler is set)
+ */
+ protected function activateProfiler() {
+ global $wgProfiler;
+
+ $output = $this->getOption( 'profiler' );
+ if ( $output && is_array( $wgProfiler ) ) {
+ $class = $wgProfiler['class'];
+ $profiler = new $class(
+ array( 'sampling' => 1, 'output' => $output ) + $wgProfiler
+ );
+ $profiler->setTemplated( true );
+ Profiler::replaceStubInstance( $profiler );
+ }
+ }
+
/**
* Clear all params and arguments.
*/
LBFactory::destroyInstance();
}
+ // Per-script profiling; useful for debugging
+ $this->activateProfiler();
+
$this->afterFinalSetup();
$wgShowSQLErrors = true;
// @codingStandardsIgnoreStart
$this->adjustMemoryLimit();
-
- // Per-script profiling; useful for debugging
- $forcedProfiler = $this->getOption( 'profiler' );
- if ( $forcedProfiler === 'text' ) {
- Profiler::setInstance( new ProfilerSimpleText( array() ) );
- Profiler::instance()->setTemplated( true );
- } elseif ( $forcedProfiler === 'trace' ) {
- Profiler::setInstance( new ProfilerSimpleTrace( array() ) );
- Profiler::instance()->setTemplated( true );
- }
}
/**