var $history = WikiExporter::FULL;
var $fetchCount = 0;
var $prefetchCount = 0;
- var $lastTime = 0;
- var $pageCountLast = 0;
- var $revCountLast = 0;
var $prefetchCountLast = 0;
var $fetchCountLast = 0;
var $spawnRead = false;
var $spawnErr = false;
- var $ID = 0;
-
var $xmlwriterobj = false;
- # when we spend more than maxTimeAllowed seconds on this run, we continue
- # processing until we write out the next complete page, then save output file(s),
- # rename it/them and open new one(s)
+ // when we spend more than maxTimeAllowed seconds on this run, we continue
+ // processing until we write out the next complete page, then save output file(s),
+ // rename it/them and open new one(s)
var $maxTimeAllowed = 0; // 0 = no limit
var $timeExceeded = false;
var $firstPageWritten = false;
function initProgress( $history ) {
parent::initProgress();
- $this->ID = getmypid();
- $this->lastTime = $this->startTime;
$this->timeOfCheckpoint = $this->startTime;
}
function dump( $history, $text = WikiExporter::TEXT ) {
- # This shouldn't happen if on console... ;)
+ // This shouldn't happen if on console... ;)
header( 'Content-type: text/html; charset=UTF-8' );
- # Notice messages will foul up your XML output even if they're
- # relatively harmless.
+ // Notice messages will foul up your XML output even if they're
+ // relatively harmless.
if ( ini_get( 'display_errors' ) )
ini_set( 'display_errors', 'stderr' );
$this->egress = new ExportProgressFilter( $this->sink, $this );
- # it would be nice to do it in the constructor, oh well. need egress set
+ // it would be nice to do it in the constructor, oh well. need egress set
$this->finalOptionCheck();
- # we only want this so we know how to close a stream :-P
+ // we only want this so we know how to close a stream :-P
$this->xmlwriterobj = new XmlDumpWriter();
$input = fopen( $this->input, "rt" );
$result = $this->readDump( $input );
if ( WikiError::isError( $result ) ) {
- wfDie( $result->getMessage() );
+ throw new MWException( $result->getMessage() );
}
if ( $this->spawnProc ) {
if ( $this->reporting ) {
$now = wfTimestamp( TS_DB );
+ $nowts = wfTime();
$deltaAll = wfTime() - $this->startTime;
$deltaPart = wfTime() - $this->lastTime;
$this->pageCountPart = $this->pageCount - $this->pageCountLast;
$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), %0.1f%%|%0.1f%% prefetched (all|curr), ETA %s [max %d]",-
+ $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), %0.1f%%|%0.1f%% prefetched (all|curr), ETA %s [max %d]",
$now, wfWikiID(), $this->ID, $this->pageCount, $pageRate, $pageRatePart, $this->revCount, $revRate, $revRatePart, $fetchRate, $fetchRatePart, $etats, $this->maxCount ) );
- $this->lastTime = $now;
- $this->partCountLast = $this->partCount;
+ $this->lastTime = $nowts;
$this->revCountLast = $this->revCount;
$this->prefetchCountLast = $this->prefetchCount;
$this->fetchCountLast = $this->fetchCount;
}
function finalOptionCheck() {
- if (($this->checkpointFiles && ! $this->maxTimeAllowed) ||
- ($this->maxTimeAllowed && !$this->checkpointFiles)) {
- wfDie("Options checkpointfile and maxtime must be specified together.\n");
+ if ( ( $this->checkpointFiles && ! $this->maxTimeAllowed ) ||
+ ( $this->maxTimeAllowed && !$this->checkpointFiles ) ) {
+ throw new MWException("Options checkpointfile and maxtime must be specified together.\n");
}
foreach ($this->checkpointFiles as $checkpointFile) {
- $count = substr_count ($checkpointFile,"%s");
- if (substr_count ($checkpointFile,"%s") != 2) {
- wfDie("Option checkpointfile must contain two '%s' for substitution of first and last pageids, count is $count instead, fil
-e is $checkpointFile.\n");
+ $count = substr_count ( $checkpointFile,"%s" );
+ if ( $count != 2 ) {
+ throw new MWException("Option checkpointfile must contain two '%s' for substitution of first and last pageids, count is $count instead, file is $checkpointFile.\n");
}
}
- $filenameList = $this->egress->getFilename();
- if (! is_array($filenameList)) {
- $filenameList = array( $filenameList );
- }
- if (count($filenameList) != count($this->checkpointFiles)) {
- wfDie("One checkpointfile must be specified for each output option, if maxtime is used.\n");
+ if ( $this->checkpointFiles ) {
+ $filenameList = (array)$this->egress->getFilenames();
+ if ( count( $filenameList ) != count( $this->checkpointFiles ) ) {
+ throw new MWException("One checkpointfile must be specified for each output option, if maxtime is used.\n");
+ }
}
}
$offset += strlen( $chunk );
} while ( $chunk !== false && !feof( $input ) );
if ($this->maxTimeAllowed) {
- $filenameList = $this->egress->getFilename();
- # we wrote some stuff after last checkpoint that needs renamed */
- if (! is_array($filenameList)) {
- $filenameList = array( $filenameList );
- }
+ $filenameList = (array)$this->egress->getFilenames();
+ // we wrote some stuff after last checkpoint that needs renamed
if (file_exists($filenameList[0])) {
$newFilenames = array();
$firstPageID = str_pad($this->firstPageWritten,9,"0",STR_PAD_LEFT);
$lastPageID = str_pad($this->lastPageWritten,9,"0",STR_PAD_LEFT);
- for ($i =0; $i < count($filenameList); $i++) {
- $checkpointNameFilledIn = sprintf($this->checkpointFiles[$i], $firstPageID, $lastPageID);
+ for ( $i = 0; $i < count( $filenameList ); $i++ ) {
+ $checkpointNameFilledIn = sprintf( $this->checkpointFiles[$i], $firstPageID, $lastPageID );
$fileinfo = pathinfo($filenameList[$i]);
- $newFilenames[] = $fileinfo{'dirname'} . '/' . $checkpointNameFilledIn;
+ $newFilenames[] = $fileinfo['dirname'] . '/' . $checkpointNameFilledIn;
}
- $this->egress->rename( $newFilenames );
+ $this->egress->closeAndRename( $newFilenames );
}
}
xml_parser_free( $parser );
$this->lastPageWritten = trim($this->thisPage);
if ($this->timeExceeded) {
$this->egress->writeClosePage( $this->buffer );
- # nasty hack, we can't just write the chardata after the
- # page tag, it will include leading blanks from the next line
+ // nasty hack, we can't just write the chardata after the
+ // page tag, it will include leading blanks from the next line
$this->egress->sink->write("\n");
$this->buffer = $this->xmlwriterobj->closeStream();
$this->buffer = "";
$this->thisPage = "";
- /* this could be more than one file if we had more than one output arg */
+ // this could be more than one file if we had more than one output arg
$checkpointFilenames = array();
- $filenameList = $this->egress->getFilename();
-
- if (! is_array($filenameList)) {
- $filenameList = array( $filenameList );
- }
+ $filenameList = (array)$this->egress->getFilenames();
$newFilenames = array();
$firstPageID = str_pad($this->firstPageWritten,9,"0",STR_PAD_LEFT);
$lastPageID = str_pad($this->lastPageWritten,9,"0",STR_PAD_LEFT);
- for ($i =0; $i < count($filenameList); $i++) {
- $checkpointNameFilledIn = sprintf($this->checkpointFiles[$i], $firstPageID, $lastPageID);
+ for ( $i = 0; $i < count( $filenameList ); $i++ ) {
+ $checkpointNameFilledIn = sprintf( $this->checkpointFiles[$i], $firstPageID, $lastPageID );
$fileinfo = pathinfo($filenameList[$i]);
- $newFilenames[] = $fileinfo{'dirname'} . '/' . $checkpointNameFilledIn;
+ $newFilenames[] = $fileinfo['dirname'] . '/' . $checkpointNameFilledIn;
}
$this->egress->closeRenameAndReopen( $newFilenames );
$this->buffer = $this->xmlwriterobj->openStream();
$this->thisPage .= $data;
}
}
- # have to skip the newline left over from closepagetag line of
- # end of checkpoint files. nasty hack!!
+ // have to skip the newline left over from closepagetag line of
+ // end of checkpoint files. nasty hack!!
if ($this->checkpointJustWritten) {
if ($data[0] == "\n") {
$data = substr($data,1);