X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;ds=sidebyside;f=maintenance%2Fbackup.inc;h=6e1ddb4ee777257844d0c295fc4f1c43956647e3;hb=3439473dfcc611d1f369961ded1d567320211741;hp=323a870e6847962d48339de0881deebd1eade33c;hpb=f8568f7bd9b749ad2749c79b2e93f63271831341;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/backup.inc b/maintenance/backup.inc index 323a870e68..6e1ddb4ee7 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" ); @@ -132,50 +135,53 @@ class BackupDumper { foreach ( $args as $arg ) { $matches = array(); if ( preg_match( '/^--(.+?)(?:=(.+?)(?::(.+?))?)?$/', $arg, $matches ) ) { - @list( /* $full */ , $opt, $val, $param ) = $matches; + MediaWiki\suppressWarnings(); + list( /* $full */, $opt, $val, $param ) = $matches; + MediaWiki\restoreWarnings(); + 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 ); } @@ -304,6 +310,7 @@ class BackupDumper { function backupServer() { global $wgDBserver; + return $this->server ? $this->server : $wgDBserver; @@ -351,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; }