$this->addOption( 'conf', 'Location of LocalSettings.php, if not default', false, true );
$this->addOption( 'wiki', 'For specifying the wiki ID', false, true );
$this->addOption( 'globals', 'Output globals at the end of processing for debugging' );
- $this->addOption( 'memory-limit', 'Set a specific memory limit for the script' );
+ $this->addOption( 'memory-limit', 'Set a specific memory limit for the script, -1 for no limit or 0 to avoid changing it' );
// If we support a DB, show the options
if ( $this->getDbType() > 0 ) {
$this->addOption( 'dbuser', 'The DB user to use for this script', false, true );
// command-line mode is on, regardless of PHP version.
}
+ $this->loadParamsAndArgs();
+ $this->maybeHelp();
+
# Set the memory limit
# Note we need to set it again later in cache LocalSettings changed it
- ini_set( 'memory_limit', $this->memoryLimit() );
+ $this->adjustMemoryLimit();
# Set max execution time to 0 (no limit). PHP.net says that
# "When running PHP from the command line the default setting is 0."
# Turn off output buffering if it's on
@ob_end_flush();
- $this->loadParamsAndArgs();
- $this->maybeHelp();
$this->validateParamsAndArgs();
}
return $this->getOption( 'memory-limit', -1 );
}
+ /**
+ * Adjusts PHP's memory limit to better suit our needs, if needed.
+ */
+ protected function adjustMemoryLimit() {
+ if ( $this->memoryLimit() != 0 ) {
+ ini_set( 'memory_limit', $this->memoryLimit() );
+ }
+ }
+
/**
* Clear all params and arguments.
*/
$wgShowSQLErrors = true;
@set_time_limit( 0 );
- ini_set( 'memory_limit', $this->memoryLimit() );
+ $this->adjustMemoryLimit();
$wgProfiling = false; // only for Profiler.php mode; avoids OOM errors
}