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().
57 lines
1.6 KiB
Text
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
|