Exemplo n.º 1
0
 public function displayReport($forceLog, TokenRange $currentRange, $rangeTotal, $rangeProcessed, $rangeErrors, $rangeStartTime, $lastKey)
 {
     static $lastReportTime = 0;
     $now = microtime(true);
     if ($lastReportTime == 0) {
         $lastReportTime = $rangeStartTime;
     }
     $totalDuration = $now - $this->_startTime;
     if ($totalDuration > 0) {
         $averageRate = round($this->totalItems / $totalDuration);
     } else {
         $averageRate = 0;
     }
     $rangeDuration = $now - $rangeStartTime;
     if ($rangeDuration > 0) {
         $currentRate = round($rangeTotal / $rangeDuration);
     } else {
         $currentRate = 0;
     }
     $rangeSkipped = $rangeTotal - ($rangeProcessed + $rangeErrors);
     $totalSkipped = $this->totalItems - ($this->processedItems + $this->errors);
     // Log the stats periodically
     if ($forceLog || $now - $lastReportTime >= $this->_reportInterval) {
         $lastReportTime = $now;
         $this->_logReport($now, $rangeStartTime, $rangeProcessed, $rangeTotal, $rangeErrors, $totalDuration, $currentRate, $averageRate, $lastKey);
     }
     // Display a nice report
     $prettyReport = $this->_generatePrettyReport($currentRange, $now, $rangeStartTime, $rangeTotal, $rangeProcessed, $rangeErrors, $currentRate, $rangeSkipped, $totalSkipped, $totalDuration, $averageRate, $lastKey);
     if ($this->displayPrettyReport) {
         Shell::redrawScreen($prettyReport);
     }
     // Store the pretty report in a file
     $logsDir = CliLogger::getDefaultLogPath($this->_instanceName);
     $reportFile = $logsDir . DS . 'report.txt';
     file_put_contents($reportFile, $prettyReport);
     // Store the raw stats
     $rawStats = json_encode(['hostname' => $currentRange->hostname, 'rangeId' => $currentRange->id(), 'startToken' => $currentRange->startToken, 'endToken' => $currentRange->endToken, 'rangeFirstKey' => $currentRange->firstKey, 'rangeLastKey' => $currentRange->lastKey, 'timestamp' => $now, 'rangeStartTime' => $rangeStartTime, 'rangeTotal' => $rangeTotal, 'rangeProcessed' => $rangeProcessed, 'rangeErrors' => $rangeErrors, 'rangeSkipped' => $rangeSkipped, 'currentRate' => $currentRate, 'totalItems' => $this->totalItems, 'totalProcessed' => $this->processedItems, 'totalErrors' => $this->errors, 'totalSkipped' => $totalSkipped, 'totalDuration' => $totalDuration, 'averageRate' => $averageRate, 'lastKey' => $lastKey]);
     $rawStatsFile = $logsDir . DS . 'stats.txt';
     file_put_contents($rawStatsFile, $rawStats);
 }