From a7526f12917a628204a241c639687b10f513d580 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 13 Jun 2017 21:56:50 +0000 Subject: [PATCH] New function for affected rows --- include/dba.php | 16 ++++++++++++++++ include/poller.php | 21 +++++++++------------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/include/dba.php b/include/dba.php index d310ad04c..1c63fa505 100644 --- a/include/dba.php +++ b/include/dba.php @@ -21,6 +21,8 @@ class dba { private $driver; public $connected = false; public $error = false; + public $errorno = 0; + public $affected_rows = 0; private $_server_info = ''; private static $in_transaction = false; private static $dbo; @@ -551,6 +553,7 @@ class dba { self::$dbo->error = ''; self::$dbo->errorno = 0; + self::$dbo->affected_rows = 0; switch (self::$dbo->driver) { case 'pdo': @@ -573,6 +576,7 @@ class dba { $retval = false; } else { $retval = $stmt; + self::$dbo->affected_rows = $retval->rowCount(); } break; case 'mysqli': @@ -612,6 +616,7 @@ class dba { } else { $stmt->store_result(); $retval = $stmt; + self::$dbo->affected_rows = $retval->affected_rows; } break; case 'mysql': @@ -620,6 +625,8 @@ class dba { if (mysql_errno(self::$dbo->db)) { self::$dbo->error = mysql_error(self::$dbo->db); self::$dbo->errorno = mysql_errno(self::$dbo->db); + } else { + self::$dbo->affected_rows = mysql_affected_rows($retval); } break; } @@ -754,6 +761,15 @@ class dba { return $retval; } + /** + * @brief Returns the number of affected rows of the last statement + * + * @return int Number of rows + */ + static public function affected_rows() { + return self::$dbo->affected_rows; + } + /** * @brief Returns the number of rows of a statement * diff --git a/include/poller.php b/include/poller.php index 6c2f9a0d6..dbfc51100 100644 --- a/include/poller.php +++ b/include/poller.php @@ -612,36 +612,33 @@ function find_worker_processes() { if (poller_passing_slow($highest_priority)) { // Are there waiting processes with a higher priority than the currently highest? - $result = dba::p("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? + $result = dba::e("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? WHERE `executed` <= ? AND `priority` < ? ORDER BY `priority`, `created` LIMIT 5", datetime_convert(), getmypid(), NULL_DATE, $highest_priority); - if (dbm::is_result($result)) { - $found = (dba::num_rows($result) > 0); + if ($result) { + $found = (dba::affected_rows() > 0); } - dba::close($result); if (!$found) { // Give slower processes some processing time - $result = dba::p("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? + $result = dba::e("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? WHERE `executed` <= ? AND `priority` > ? ORDER BY `priority`, `created` LIMIT 1", datetime_convert(), getmypid(), NULL_DATE, $highest_priority); - if (dbm::is_result($result)) { - $found = (dba::num_rows($result) > 0); + if ($result) { + $found = (dba::affected_rows() > 0); } - dba::close($result); } } // If there is no result (or we shouldn't pass lower processes) we check without priority limit if (!$found) { - $result = dba::p("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? WHERE `executed` <= ? ORDER BY `priority`, `created` LIMIT 5", + $result = dba::e("UPDATE `workerqueue` SET `executed` = ?, `pid` = ? WHERE `executed` <= ? ORDER BY `priority`, `created` LIMIT 5", datetime_convert(), getmypid(), NULL_DATE); - if (dbm::is_result($result)) { - $found = (dba::num_rows($result) > 0); + if ($result) { + $found = (dba::affected_rows() > 0); } - dba::close($result); } return $found; }