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 clearCacheStats.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::class;
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
https://doc.wikimedia.org/mediawiki-core/master/php/classMaintenance.html
