]> git.mxchange.org Git - friendica.git/commitdiff
New function for affected rows
authorMichael <heluecht@pirati.ca>
Tue, 13 Jun 2017 21:56:50 +0000 (21:56 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 13 Jun 2017 21:56:50 +0000 (21:56 +0000)
include/dba.php
include/poller.php

index d310ad04cc0bcf50ae266b0652d28fa60f2f5c42..1c63fa50540168a958235ec9c327e4d6438c28ee 100644 (file)
@@ -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
         *
index 6c2f9a0d6f3eedacc054e1edc0289cc5db86c7b5..dbfc51100fae23f1ac1849e8f23c0aea3118cf25 100644 (file)
@@ -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;
 }