X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Fbackup.inc;h=222c538b8bfd964c8308885cbfdf861d0e6d611e;hb=2011f7847ff3f3eee009fd3bf5d9c9c3a707300e;hp=7161b04dfcc5766784abe03d5dd3d723c222f38a;hpb=6b7bf092f2fbf65e20a9bc012b522f697cea15a0;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/backup.inc b/maintenance/backup.inc index 7161b04dfc..222c538b8b 100644 --- a/maintenance/backup.inc +++ b/maintenance/backup.inc @@ -37,28 +37,30 @@ class DumpDBZip2Output extends DumpPipeOutput { * @ingroup Dump Maintenance */ class BackupDumper { - var $reportingInterval = 100; - var $reporting = true; - var $pageCount = 0; - var $revCount = 0; - var $server = null; // use default - var $pages = null; // all pages - var $skipHeader = false; // don't output and - var $skipFooter = false; // don't output - var $startId = 0; - var $endId = 0; - var $revStartId = 0; - var $revEndId = 0; - var $sink = null; // Output filters - var $stubText = false; // include rev_text_id instead of text; for 2-pass dump - var $dumpUploads = false; - var $dumpUploadFileContents = false; - var $lastTime = 0; - var $pageCountLast = 0; - var $revCountLast = 0; - var $ID = 0; - - var $outputTypes = array(), $filterTypes = array(); + public $reporting = true; + public $pages = null; // all pages + public $skipHeader = false; // don't output and + public $skipFooter = false; // don't output + public $startId = 0; + public $endId = 0; + public $revStartId = 0; + public $revEndId = 0; + public $dumpUploads = false; + public $dumpUploadFileContents = false; + + protected $reportingInterval = 100; + protected $pageCount = 0; + protected $revCount = 0; + protected $server = null; // use default + protected $sink = null; // Output filters + protected $lastTime = 0; + protected $pageCountLast = 0; + protected $revCountLast = 0; + + protected $outputTypes = array(); + protected $filterTypes = array(); + + protected $ID = 0; /** * The dependency-injected database to use. @@ -69,11 +71,12 @@ class BackupDumper { */ protected $forcedDb = null; - /** - * @var LoadBalancer - */ + /** @var LoadBalancer */ protected $lb; + // @todo Unused? + private $stubText = false; // include rev_text_id instead of text; for 2-pass dump + function __construct( $args ) { $this->stderr = fopen( "php://stderr", "wt" ); @@ -92,16 +95,16 @@ class BackupDumper { } /** - * @param $name String - * @param $class String: name of output filter plugin class + * @param string $name + * @param string $class Name of output filter plugin class */ function registerOutput( $name, $class ) { $this->outputTypes[$name] = $class; } /** - * @param $name String - * @param $class String: name of filter plugin class + * @param string $name + * @param string $class Name of filter plugin class */ function registerFilter( $name, $class ) { $this->filterTypes[$name] = $class; @@ -110,9 +113,9 @@ class BackupDumper { /** * Load a plugin and register it * - * @param $class String: name of plugin class; must have a static 'register' - * method that takes a BackupDumper as a parameter. - * @param $file String: full or relative path to the PHP file to load, or empty + * @param string $class Name of plugin class; must have a static 'register' + * method that takes a BackupDumper as a parameter. + * @param string $file Full or relative path to the PHP file to load, or empty */ function loadPlugin( $class, $file ) { if ( $file != '' ) { @@ -123,8 +126,8 @@ class BackupDumper { } /** - * @param $args Array - * @return Array + * @param array $args + * @return array */ function processArgs( $args ) { $sink = null; @@ -132,50 +135,53 @@ class BackupDumper { foreach ( $args as $arg ) { $matches = array(); if ( preg_match( '/^--(.+?)(?:=(.+?)(?::(.+?))?)?$/', $arg, $matches ) ) { - @list( /* $full */ , $opt, $val, $param ) = $matches; + wfSuppressWarnings(); + list( /* $full */, $opt, $val, $param ) = $matches; + wfRestoreWarnings(); + switch ( $opt ) { - case "plugin": - $this->loadPlugin( $val, $param ); - break; - case "output": - if ( !is_null( $sink ) ) { - $sinks[] = $sink; - } - if ( !isset( $this->outputTypes[$val] ) ) { - $this->fatalError( "Unrecognized output sink type '$val'" ); - } - $type = $this->outputTypes[$val]; - $sink = new $type( $param ); - break; - case "filter": - if ( is_null( $sink ) ) { - $sink = new DumpOutput(); - } - if ( !isset( $this->filterTypes[$val] ) ) { - $this->fatalError( "Unrecognized filter type '$val'" ); - } - $type = $this->filterTypes[$val]; - $filter = new $type( $sink, $param ); - - // references are lame in php... - unset( $sink ); - $sink = $filter; - - break; - case "report": - $this->reportingInterval = intval( $val ); - break; - case "server": - $this->server = $val; - break; - case "force-normal": - if ( !function_exists( 'utf8_normalize' ) ) { - $this->fatalError( "UTF-8 normalization extension not loaded. " . - "Install or remove --force-normal parameter to use slower code." ); - } - break; - default: - $this->processOption( $opt, $val, $param ); + case "plugin": + $this->loadPlugin( $val, $param ); + break; + case "output": + if ( !is_null( $sink ) ) { + $sinks[] = $sink; + } + if ( !isset( $this->outputTypes[$val] ) ) { + $this->fatalError( "Unrecognized output sink type '$val'" ); + } + $type = $this->outputTypes[$val]; + $sink = new $type( $param ); + break; + case "filter": + if ( is_null( $sink ) ) { + $sink = new DumpOutput(); + } + if ( !isset( $this->filterTypes[$val] ) ) { + $this->fatalError( "Unrecognized filter type '$val'" ); + } + $type = $this->filterTypes[$val]; + $filter = new $type( $sink, $param ); + + // references are lame in php... + unset( $sink ); + $sink = $filter; + + break; + case "report": + $this->reportingInterval = intval( $val ); + break; + case "server": + $this->server = $val; + break; + case "force-normal": + if ( !function_exists( 'utf8_normalize' ) ) { + $this->fatalError( "UTF-8 normalization extension not loaded. " . + "Install or remove --force-normal parameter to use slower code." ); + } + break; + default: + $this->processOption( $opt, $val, $param ); } } } @@ -223,8 +229,8 @@ class BackupDumper { } else { $exporter->allLogs(); } - # Page dumps: all or by page ID range } elseif ( is_null( $this->pages ) ) { + # Page dumps: all or by page ID range if ( $this->startId || $this->endId ) { $exporter->pagesByRange( $this->startId, $this->endId ); } elseif ( $this->revStartId || $this->revEndId ) { @@ -232,8 +238,8 @@ class BackupDumper { } else { $exporter->allPages(); } - # Dump of specific pages } else { + # Dump of specific pages $exporter->pagesByName( $this->pages ); } @@ -248,7 +254,7 @@ class BackupDumper { * Initialise starting time and maximum revision count. * We'll make ETA calculations based an progress, assuming relatively * constant per-revision rate. - * @param $history Integer: WikiExporter::CURRENT or WikiExporter::FULL + * @param int $history WikiExporter::CURRENT or WikiExporter::FULL */ function initProgress( $history = WikiExporter::FULL ) { $table = ( $history == WikiExporter::CURRENT ) ? 'page' : 'revision'; @@ -289,9 +295,8 @@ class BackupDumper { * Force the dump to use the provided database connection for database * operations, wherever possible. * - * @param $db DatabaseBase|null: (Optional) the database connection to - * use. If null, resort to use the globally provided ways to - * get database connections. + * @param DatabaseBase|null $db (Optional) the database connection to use. If null, resort to + * use the globally provided ways to get database connections. */ function setDb( DatabaseBase $db = null ) { $this->forcedDb = $db; @@ -305,6 +310,7 @@ class BackupDumper { function backupServer() { global $wgDBserver; + return $this->server ? $this->server : $wgDBserver; @@ -352,8 +358,13 @@ class BackupDumper { $pageRatePart = '-'; $revRatePart = '-'; } - $this->progress( sprintf( "%s: %s (ID %d) %d pages (%0.1f|%0.1f/sec all|curr), %d revs (%0.1f|%0.1f/sec all|curr), ETA %s [max %d]", - $now, wfWikiID(), $this->ID, $this->pageCount, $pageRate, $pageRatePart, $this->revCount, $revRate, $revRatePart, $etats, $this->maxCount ) ); + $this->progress( sprintf( + "%s: %s (ID %d) %d pages (%0.1f|%0.1f/sec all|curr), " + . "%d revs (%0.1f|%0.1f/sec all|curr), ETA %s [max %d]", + $now, wfWikiID(), $this->ID, $this->pageCount, $pageRate, + $pageRatePart, $this->revCount, $revRate, $revRatePart, $etats, + $this->maxCount + ) ); $this->lastTime = $nowts; $this->revCountLast = $this->revCount; }