diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index a21d9bd1..7ebc13a8 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -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) { diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php index 3fe76a61..a7f48be2 100644 --- a/public/include/classes/transaction.class.php +++ b/public/include/classes/transaction.class.php @@ -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'); } diff --git a/public/include/config/global.inc.dist.php b/public/include/config/global.inc.dist.php index 900ca7de..4edc2ad2 100644 --- a/public/include/config/global.inc.dist.php +++ b/public/include/config/global.inc.dist.php @@ -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