FormatConverter: do not hardcode progress update interval

This commit is contained in:
Dylan K. Taylor 2020-05-24 14:30:59 +01:00
parent c95951479c
commit b05fab3e3c

View File

@ -51,11 +51,15 @@ class FormatConverter{
/** @var \Logger */ /** @var \Logger */
private $logger; private $logger;
public function __construct(WorldProvider $oldProvider, string $newProvider, string $backupPath, \Logger $logger){ /** @var int */
private $chunksPerProgressUpdate;
public function __construct(WorldProvider $oldProvider, string $newProvider, string $backupPath, \Logger $logger, int $chunksPerProgressUpdate = 256){
$this->oldProvider = $oldProvider; $this->oldProvider = $oldProvider;
Utils::testValidInstance($newProvider, WritableWorldProvider::class); Utils::testValidInstance($newProvider, WritableWorldProvider::class);
$this->newProvider = $newProvider; $this->newProvider = $newProvider;
$this->logger = new \PrefixedLogger($logger, "World Converter: " . $this->oldProvider->getWorldData()->getName()); $this->logger = new \PrefixedLogger($logger, "World Converter: " . $this->oldProvider->getWorldData()->getName());
$this->chunksPerProgressUpdate = $chunksPerProgressUpdate;
if(!file_exists($backupPath)){ if(!file_exists($backupPath)){
@mkdir($backupPath, 0777, true); @mkdir($backupPath, 0777, true);
@ -134,16 +138,15 @@ class FormatConverter{
$start = microtime(true); $start = microtime(true);
$thisRound = $start; $thisRound = $start;
static $reportInterval = 256;
foreach($this->oldProvider->getAllChunks(true, $this->logger) as $chunk){ foreach($this->oldProvider->getAllChunks(true, $this->logger) as $chunk){
$chunk->setDirty(); $chunk->setDirty();
$new->saveChunk($chunk); $new->saveChunk($chunk);
$counter++; $counter++;
if(($counter % $reportInterval) === 0){ if(($counter % $this->chunksPerProgressUpdate) === 0){
$time = microtime(true); $time = microtime(true);
$diff = $time - $thisRound; $diff = $time - $thisRound;
$thisRound = $time; $thisRound = $time;
$this->logger->info("Converted $counter / $count chunks (" . floor($reportInterval / $diff) . " chunks/sec)"); $this->logger->info("Converted $counter / $count chunks (" . floor($this->chunksPerProgressUpdate / $diff) . " chunks/sec)");
} }
} }
$total = microtime(true) - $start; $total = microtime(true) - $start;