/** * Tick callback * * @param Tick $tick */ public function tick(Tick $tick) { $rpt = $tick->getReport(); if (!$this->progressBar) { $this->start($tick); } $msgSegs = [$tick->getMessage()]; if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { $msgSegs[] = sprintf('Processed: <fg=green>%s</fg=green>', number_format($rpt->getNumItemsSuccess(), 0)); $msgSegs[] = sprintf('Skipped: <fg=yellow>%s</fg=yellow>', number_format($rpt->getNumItemsFail(), 0)); $msgSegs[] = sprintf('Failed: <fg=red>%s</fg=red>', number_format($rpt->getNumItemsSkip(), 0)); } if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE) { $msgSegs[] = sprintf("Avg: %s", number_format($rpt->getAvgItemTime(), 2)); $msgSegs[] = sprintf('Memory: %s/%s', $this->bytesToHuman($rpt->getMemUsage(), 2), $this->bytesToHuman($rpt->getMemPeakUsage(), 2)); } $this->progressBar->setMessage(implode(' | ', $msgSegs)); $this->progressBar->setProgress($rpt->getNumItemsProcessed()); //$this->progressBar->advance($rpt->getTick()->getIncrementBy()); }
/** * Abort callback * * @param Tick $tick */ public function abort(Tick $tick) { $this->logger->warning($tick->getMessage() ?: 'Aborted', $tick->getReport()->toArray()); }
/** * Write Log Line * * @param Tick $tick */ public function writeLogLine(Tick $tick) { // Line segments $lineSegs = array(); // 1st Segment is a star switch ($tick->getStatus()) { case Tick::SUCCESS: $lineSegs[] = sprintf("<fg=green>%s</fg=green>", $this->linePrefixMap[Tick::SUCCESS]); break; case Tick::FAIL: $lineSegs[] = sprintf("<fg=red>%s</fg=red>", $this->linePrefixMap[Tick::FAIL]); break; case Tick::SKIP: default: $lineSegs[] = $this->linePrefixMap[Tick::SKIP]; } // Item Progress $lineSegs[] = sprintf("[%s%s]", $tick->getReport()->getNumItemsProcessed(), $tick->getReport()->getTotalItemCount() != Tracker::UNKNOWN ? "/" . $tick->getReport()->getTotalItemCount() : ''); // If verbose, add walltime and item counts if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { $lineSegs[] = $this->formatSeconds($tick->getReport()->getTimeElapsed()); $lineSegs[] = sprintf('(<fg=green>%s</fg=green>/%s/<fg=red>%s</fg=red>)', $tick->getReport()->getNumItemsSuccess(), $tick->getReport()->getNumItemsSkip(), $tick->getReport()->getNumItemsFail()); } // If very verbose, add memory usage if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE) { $lineSegs[] = sprintf("{%s/%s}", $this->bytesToHuman($tick->getReport()->getMemUsage()), $this->bytesToHuman($tick->getReport()->getMemPeakUsage())); } // Add message $lineSegs[] = $tick->getMessage() ?: sprintf("Processing item %s", number_format($tick->getReport()->getNumItemsProcessed(), 0)); // Output it! $this->output->writeln(implode(' ', $lineSegs)); }