Merge pull request #1782 from MPOS/payout-tx-limit

[ADDED] Payout Queue Limiter
This commit is contained in:
Sebastian Grewe 2014-02-19 09:12:24 +01:00
commit 63a6672cd2
3 changed files with 17 additions and 8 deletions

View File

@ -45,7 +45,7 @@ if (!$dWalletBalance = $bitcoin->getrealbalance())
$dWalletBalance = 0;
// Fetch outstanding manual-payouts
$aManualPayouts = $transaction->getMPQueue();
$aManualPayouts = $transaction->getMPQueue($config['payout']['txlimit_manual']);
// Fetch our manual payouts, process them
if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts) {
@ -117,7 +117,7 @@ if (!$dWalletBalance = $bitcoin->getrealbalance())
$dWalletBalance = 0;
// Fetch outstanding auto-payouts
$aAutoPayouts = $transaction->getAPQueue();
$aAutoPayouts = $transaction->getAPQueue($config['payout']['txlimit_auto']);
// Fetch our auto payouts, process them
if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts) {

View File

@ -288,7 +288,7 @@ class Transaction extends Base {
* @param none
* @return data array Account settings and confirmed balances
**/
public function getAPQueue() {
public function getAPQueue($limit=250) {
$this->debug->append("STA " . __METHOD__, 4);
$stmt = $this->mysqli->prepare("
SELECT
@ -312,8 +312,9 @@ class Transaction extends Base {
ON t.account_id = a.id
WHERE t.archived = 0 AND a.ap_threshold > 0 AND a.coin_address IS NOT NULL AND a.coin_address != ''
GROUP BY t.account_id
HAVING confirmed > a.ap_threshold AND confirmed > " . $this->config['txfee_auto']);
if ($this->checkStmt($stmt) && $stmt->execute() && $result = $stmt->get_result())
HAVING confirmed > a.ap_threshold AND confirmed > " . $this->config['txfee_auto'] . "
LIMIT ?");
if ($this->checkStmt($stmt) && $stmt->bind_param('i', $limit) && $stmt->execute() && $result = $stmt->get_result())
return $result->fetch_all(MYSQLI_ASSOC);
return $this->sqlError();
}
@ -377,7 +378,7 @@ class Transaction extends Base {
* @param none
* @return data Associative array with DB Fields
**/
public function getMPQueue() {
public function getMPQueue($limit=250) {
$stmt = $this->mysqli->prepare("
SELECT
a.id,
@ -403,8 +404,9 @@ class Transaction extends Base {
ON t.block_id = b.id
WHERE p.completed = 0 AND t.archived = 0 AND a.coin_address IS NOT NULL AND a.coin_address != ''
GROUP BY t.account_id
HAVING confirmed > " . $this->config['txfee_manual']);
if ($this->checkStmt($stmt) && $stmt->execute() && $result = $stmt->get_result())
HAVING confirmed > " . $this->config['txfee_manual'] . "
LIMIT ?");
if ($this->checkStmt($stmt) && $stmt->bind_param('i', $limit) && $stmt->execute() && $result = $stmt->get_result())
return $result->fetch_all(MYSQLI_ASSOC);
return $this->sqlError('E0050');
}

View File

@ -142,6 +142,13 @@ $config['payout_system'] = 'prop';
**/
$config['sendmany']['enabled'] = false;
/**
* Transaction Limits
* Number of transactions per payout run
**/
$config['payout']['txlimit_manual'] = 500;
$config['payout']['txlimit_auto'] = 500;
/**
* Round Purging
* Round share purging configuration