Merge pull request #844 from TheSerapher/issue-843

[IMPROVE] Use round shares cache for user admin
This commit is contained in:
Sebastian Grewe 2013-11-14 06:31:07 -08:00
commit cde7813da2
4 changed files with 17 additions and 25 deletions

View File

@ -369,17 +369,21 @@ class Statistics extends Base {
a.no_fees as no_fees, a.no_fees as no_fees,
a.username AS username, a.username AS username,
a.donate_percent AS donate_percent, a.donate_percent AS donate_percent,
a.email AS email, a.email AS email
ROUND(IFNULL(SUM(IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS shares
FROM " . $this->user->getTableName() . " AS a FROM " . $this->user->getTableName() . " AS a
LEFT JOIN " . $this->share->getTableName() . " AS s
ON a.username = SUBSTRING_INDEX( s.username, '.', 1 )
WHERE WHERE
a.username LIKE ? a.username LIKE ?
GROUP BY username GROUP BY username
ORDER BY username"); ORDER BY username");
if ($this->checkStmt($stmt) && $stmt->bind_param('s', $filter) && $stmt->execute() && $result = $stmt->get_result()) if ($this->checkStmt($stmt) && $stmt->bind_param('s', $filter) && $stmt->execute() && $result = $stmt->get_result()) {
return $this->memcache->setCache(__FUNCTION__ . $filter, $result->fetch_all(MYSQLI_ASSOC)); // Add our cached shares to the users
while ($row = $result->fetch_assoc()) {
$row['shares'] = $this->getUserShares($row['id']);
$aUsers[] = $row;
}
// Also cache this
return $this->memcache->setCache(__FUNCTION__ . $filter, $aUsers);
}
return $this->sqlError(); return $this->sqlError();
} }

View File

@ -31,23 +31,11 @@ if (@$_POST['query']) {
$aUsers = $statistics->getAllUserStats($_POST['query']); $aUsers = $statistics->getAllUserStats($_POST['query']);
// Add additional stats to each user // Add additional stats to each user
// This is not optimized yet, best is a proper SQL
// Query against the stats table? Currently cached though.
foreach ($aUsers as $iKey => $aUser) { foreach ($aUsers as $iKey => $aUser) {
$aBalance = $transaction->getBalance($aUser['id']); $aBalance = $transaction->getBalance($aUser['id']);
$aUser['balance'] = $aBalance['confirmed']; $aUser['balance'] = $aBalance['confirmed'];
$aUser['hashrate'] = $statistics->getUserHashrate($aUser['id']); $aUser['hashrate'] = $statistics->getUserHashrate($aUser['id']);
if ($aUser['shares'] > 0) { $aUser['estimates'] = $statistics->getUserEstimates($aRoundShares, $aUser['shares'], $aUser['donate_percent'], $aUser['no_fees']);
$aUser['payout']['est_block'] = round(( (int)$aUser['shares'] / (int)$aRoundShares['valid'] ) * (int)$config['reward'], 3);
$aUser['payout']['est_fee'] = round(($config['fees'] / 100) * $aUser['payout']['est_block'], 3);
$aUser['payout']['est_donation'] = round((( $aUser['donate_percent'] / 100) * ($aUser['payout']['est_block'] - $aUser['payout']['est_fee'])), 3);
$aUser['payout']['est_payout'] = round($aUser['payout']['est_block'] - $aUser['payout']['est_donation'] - $aUser['payout']['est_fee'], 3);
} else {
$aUser['payout']['est_block'] = 0;
$aUser['payout']['est_fee'] = 0;
$aUser['payout']['est_donation'] = 0;
$aUser['payout']['est_payout'] = 0;
}
$aUsers[$iKey] = $aUser; $aUsers[$iKey] = $aUser;
} }
// Assign our variables // Assign our variables

View File

@ -58,10 +58,10 @@
<td class="center">{$USERS[user].id}</td> <td class="center">{$USERS[user].id}</td>
<td>{$USERS[user].username|escape}</td> <td>{$USERS[user].username|escape}</td>
<td>{$USERS[user].email|escape}</td> <td>{$USERS[user].email|escape}</td>
<td class="right">{$USERS[user].shares}</td> <td class="right">{$USERS[user].shares.valid}</td>
<td class="right">{$USERS[user].hashrate}</td> <td class="right">{$USERS[user].hashrate}</td>
<td class="right">{$USERS[user].payout.est_donation|number_format:"8"}</td> <td class="right">{$USERS[user].estimates.donation|number_format:"8"}</td>
<td class="right">{$USERS[user].payout.est_payout|number_format:"8"}</td> <td class="right">{$USERS[user].estimates.payout|number_format:"8"}</td>
<td class="right">{$USERS[user].balance|number_format:"8"}</td> <td class="right">{$USERS[user].balance|number_format:"8"}</td>
<td class="center"> <td class="center">
<input type="hidden" name="admin[{$USERS[user].id}]" value="0"/> <input type="hidden" name="admin[{$USERS[user].id}]" value="0"/>

View File

@ -51,10 +51,10 @@
<td align="center">{$USERS[user].id}</td> <td align="center">{$USERS[user].id}</td>
<td align="left">{$USERS[user].username|escape}</td> <td align="left">{$USERS[user].username|escape}</td>
<td align="left">{$USERS[user].email|escape}</td> <td align="left">{$USERS[user].email|escape}</td>
<td align="right">{$USERS[user].shares}</td> <td align="right">{$USERS[user].shares.valid}</td>
<td align="right">{$USERS[user].hashrate}</td> <td align="right">{$USERS[user].hashrate}</td>
<td align="right">{$USERS[user].payout.est_donation|number_format:"8"}</td> <td align="right">{$USERS[user].estimates.donation|number_format:"8"}</td>
<td align="right">{$USERS[user].payout.est_payout|number_format:"8"}</td> <td align="right">{$USERS[user].estimates.payout|number_format:"8"}</td>
<td align="right">{$USERS[user].balance|number_format:"8"}</td> <td align="right">{$USERS[user].balance|number_format:"8"}</td>
<td align="center"> <td align="center">
<input type="hidden" name="admin[{$USERS[user].id}]" value="0"/> <input type="hidden" name="admin[{$USERS[user].id}]" value="0"/>