]> git.mxchange.org Git - friendica.git/blobdiff - include/poller.php
Fixes E_WARNING from foreach() because count() seem to return TRUE even when $r is...
[friendica.git] / include / poller.php
index d68e8081cac7f39d13eca0674118b3aa0f46a24c..558eda25ffbcfd2eefb827c25dc65b32e56c9c71 100644 (file)
@@ -161,35 +161,42 @@ function poller_max_connections_reached() {
                $used = count($r);
 
                logger("Connection usage (user values): ".$used."/".$max, LOGGER_DEBUG);
-       } else {
-               // Since there are no user specific limitations we will now check for the system values
-               $r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'");
-               if (!$r)
-                       return false;
 
-               $max = intval($r[0]["Value"]);
-               if ($max == 0)
-                       return false;
+               $level = $used / $max;
 
-               $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'");
-               if (!$r)
-                       return false;
+               if ($level >= (3/4)) {
+                       logger("Maximum level (3/4) of user connections reached: ".$used."/".$max);
+                       return true;
+               }
+       }
 
-               $used = intval($r[0]["Value"]);
-               if ($used == 0)
-                       return false;
+       // We will now check for the system values.
+       // This limit could be reached although the user limits are fine.
+       $r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'");
+       if (!$r)
+               return false;
 
-               logger("Connection usage (system values): ".$used."/".$max, LOGGER_DEBUG);
-       }
+       $max = intval($r[0]["Value"]);
+       if ($max == 0)
+               return false;
+
+       $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'");
+       if (!$r)
+               return false;
+
+       $used = intval($r[0]["Value"]);
+       if ($used == 0)
+               return false;
+
+       logger("Connection usage (system values): ".$used."/".$max, LOGGER_DEBUG);
 
        $level = $used / $max;
 
        if ($level < (3/4))
                return false;
 
-       logger("Maximum level (3/4) of connections reached: ".$used."/".$max);
+       logger("Maximum level (3/4) of system connections reached: ".$used."/".$max);
        return true;
-
 }
 
 /**
@@ -198,6 +205,12 @@ function poller_max_connections_reached() {
  */
 function poller_kill_stale_workers() {
        $r = q("SELECT `pid`, `executed` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");
+
+       if (!is_filled_array($r)) {
+               // No processing here needed
+               return;
+       }
+
        foreach($r AS $pid)
                if (!posix_kill($pid["pid"], 0))
                        q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `pid` = 0 WHERE `pid` = %d",