public function getProgress($count = 100)
{
$counters = array('pending' => $this->countPending(), 'running' => $this->countRunning(), 'succeeded' => $this->countSucceeded(), 'failed' => $this->countFailed());
$total = array_sum($counters);
$ratios = array_map(function ($x) use($total, $count) {
if ($total === 0) {
return 0;
}
return floor($x * $count / $total);
}, $counters);
$extra = $count - array_sum($ratios);
reset($counters);
while ($extra > 0 && key($counters)) {
if ($ratios[key($counters)]) {
$ratios[key($counters)]++;
$extra--;
}
next($counters);
}
return $ratios;
}