wiki.techinc.nl/docs/maintenance.txt
Chad Horohoe 26505b170a Fix concern raised by Brion in r74108 (but has really existed since the maintenance rewrite). Right now, including a maintenance script causes it to execute. This is bad when you want to reuse the particular class but not have it start executing all by itself.
Until now, we relied on setting MW_NO_SETUP which was a) hacky, b) irreversable, and c) likely to be forgotten if you didn't use one of the wrappers like runChild().

Instead, move the freaky magic to doMaintenance and have *it* check if it's in a specific call stack that indicates this is being run from the file scope and should be executed. Rename DO_MAINTENANCE to RUN_MAINTENANCE_IF_MAIN so it's nice and clear what magic happens behind the require_once().
2011-01-13 22:58:55 +00:00

57 lines
1.6 KiB
Text

Prior to version 1.16, maintenance scripts were a hodgepodge of code that
had no cohesion or formal method of action. Beginning in 1.16, maintenance
scripts have been cleaned up to use a unified class.
1. Directory structure
2. How to run a script
3. How to write your own
1. DIRECTORY STRUCTURE
The /maintenance directory of a MediaWiki installation contains several
subdirectories, all of which have unique purposes.
2. HOW TO RUN A SCRIPT
Ridiculously simple, just call 'php someScript.php' that's in the top-
level /maintenance directory.
Example:
php clear_stats.php
The following parameters are available to all maintenance scripts
--help : Print a help message
--quiet : Quiet non-error output
--dbuser : The database user to use for the script (if needed)
--dbpass : Same as above (if needed)
--conf : Location of LocalSettings.php, if not default
--wiki : For specifying the wiki ID
--batch-size : If the script supports batch operations, do this many per batch
3. HOW TO WRITE YOUR OWN
Make a file in the maintenance directory called myScript.php or something.
In it, write the following:
==BEGIN==
<?php
require_once( "Maintenance.php" );
class DemoMaint extends Maintenance {
public function __construct() {
parent::__construct();
}
public function execute() {
}
}
$maintClass = "DemoMaint";
require_once( RUN_MAINTENANCE_IF_MAIN );
==END==
That's it. In the execute() method, you have access to all of the normal
MediaWiki functions, so you can get a DB connection, use the cache, etc.
For full docs on the Maintenance class, see the auto-generated docs at
http://svn.wikimedia.org/doc/classMaintenance.html