diff --git a/pool/page_workers.php b/pool/page_workers.php
index 9f2d92fc..938aee9a 100644
--- a/pool/page_workers.php
+++ b/pool/page_workers.php
@@ -15,9 +15,14 @@ function worktitle($data, $user)
return $pg;
}
#
+function workhashorder($a, $b)
+{
+ return $b['w_uhr'] - $a['w_uhr'];
+}
+#
function workuser($data, $user, &$offset, &$totshare, &$totdiff,
&$totinvalid, &$totrate, &$blockacc,
- &$blockreward, $old = false)
+ &$blockreward, $old = false, $srt = false)
{
$ans = getWorkers($user);
@@ -28,6 +33,7 @@ function workuser($data, $user, &$offset, &$totshare, &$totdiff,
$blockacc = $ans['blockacc'];
if (isset($ans['blockreward']))
$blockreward = $ans['blockreward'];
+ $all = array();
$count = $ans['rows'];
for ($i = 0; $i < $count; $i++)
{
@@ -35,48 +41,69 @@ function workuser($data, $user, &$offset, &$totshare, &$totdiff,
if ($old !== false && $lst > $old)
continue;
+ if ($ans['w_elapsed:'.$i] > 3600)
+ $uhr = $ans['w_hashrate1hr:'.$i];
+ else
+ $uhr = $ans['w_hashrate5m:'.$i];
+
+ $all[] = array('workername' => $ans['workername:'.$i],
+ 'w_lastshare' => $ans['w_lastshare:'.$i],
+ 'w_lastdiff' => $ans['w_lastdiff:'.$i],
+ 'w_shareacc' => $ans['w_shareacc:'.$i],
+ 'w_diffacc' => $ans['w_diffacc:'.$i],
+ 'w_diffinv' => $ans['w_diffinv:'.$i],
+ 'w_lastdiff' => $ans['w_lastdiff:'.$i],
+ 'w_uhr' => $uhr);
+ }
+
+ if ($srt)
+ usort($all, 'workhashorder');
+
+ for ($i = 0; $i < $count; $i++)
+ {
+ $lst = $ans['STAMP'] - $all[$i]['w_lastshare'];
+ if ($old !== false && $lst > $old)
+ continue;
+
if ((($offset) % 2) == 0)
$row = 'even';
else
$row = 'odd';
$pg .= "
";
- $pg .= ''.htmlspecialchars($ans['workername:'.$i]).' | ';
- if ($ans['w_lastdiff:'.$i] > 0)
- $ld = difffmt($ans['w_lastdiff:'.$i]);
+ $pg .= ''.htmlspecialchars($all[$i]['workername']).' | ';
+ if ($all[$i]['w_lastdiff'] > 0)
+ $ld = difffmt($all[$i]['w_lastdiff']);
else
$ld = ' ';
$pg .= "$ld | ";
$pg .= ''.howlongago($lst).' | ';
- $shareacc = number_format($ans['w_shareacc:'.$i], 0);
- $totshare += $ans['w_shareacc:'.$i];
- $diffacc = number_format($ans['w_diffacc:'.$i], 0);
- $totdiff += $ans['w_diffacc:'.$i];
+ $shareacc = number_format($all[$i]['w_shareacc'], 0);
+ $totshare += $all[$i]['w_shareacc'];
+ $diffacc = number_format($all[$i]['w_diffacc'], 0);
+ $totdiff += $all[$i]['w_diffacc'];
$pg .= "$shareacc | ";
$pg .= "$diffacc | ";
- $dtot = $ans['w_diffacc:'.$i] + $ans['w_diffinv:'.$i];
+ $dtot = $all[$i]['w_diffacc'] + $all[$i]['w_diffinv'];
if ($dtot > 0)
- $rej = number_format(100.0 * $ans['w_diffinv:'.$i] / $dtot, 3);
+ $rej = number_format(100.0 * $all[$i]['w_diffinv'] / $dtot, 3);
else
$rej = '0';
- $totinvalid += $ans['w_diffinv:'.$i];
+ $totinvalid += $all[$i]['w_diffinv'];
$pg .= "$rej% | ";
if ($blockacc <= 0)
$blkpct = ' ';
else
- $blkpct = number_format(100.0 * $ans['w_diffacc:'.$i] / $blockacc, 3) . '%';
+ $blkpct = number_format(100.0 * $all[$i]['w_diffacc'] / $blockacc, 3) . '%';
$pg .= "$blkpct | ";
- if ($ans['w_elapsed:'.$i] > 3600)
- $uhr = $ans['w_hashrate1hr:'.$i];
- else
- $uhr = $ans['w_hashrate5m:'.$i];
+ $uhr = $all[$i]['w_uhr'];
if ($uhr == '?')
$uhr = '?GHs';
else
@@ -138,7 +165,7 @@ function doworker($data, $user)
$pg .= worktitle($data, $user);
$pg .= workuser($data, $user, $offset, $totshare, $totdiff, $totinvalid,
- $totrate, $blockacc, $blockreward, false);
+ $totrate, $blockacc, $blockreward, false, true);
$pg .= worktotal($offset, $totshare, $totdiff, $totinvalid, $totrate,
$blockacc, $blockreward);