workaround for stalling worker processes when running the daemon
authorMichael <heluecht@pirati.ca>
Wed, 11 Jul 2018 06:05:22 +0000 (06:05 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 11 Jul 2018 06:05:22 +0000 (06:05 +0000)
bin/daemon.php
bin/worker.php
src/Core/Worker.php
src/Model/GContact.php

index f7dcce1..1abb701 100755 (executable)
@@ -106,8 +106,10 @@ if (!$foreground) {
        }
 
        fclose(STDIN);  // Close all of the standard
-       fclose(STDOUT); // file descriptors as we
-       fclose(STDERR); // are running as a daemon.
+
+       // Enabling this seem to block a running php process with 100% CPU usage when there is an outpout
+       // fclose(STDOUT); // file descriptors as we
+       // fclose(STDERR); // are running as a daemon.
 
        dba::disconnect();
 
index b4b2652..4498096 100755 (executable)
@@ -63,4 +63,3 @@ Worker::unclaimProcess();
 Worker::endProcess();
 
 killme();
-
index 296d40b..5f19870 100644 (file)
@@ -597,7 +597,7 @@ class Worker
                                                ['id' => $entry["id"]]
                                        );
                                } else {
-                                       logger("Worker process ".$entry["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG);
+                                       logger("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG);
                                }
                        }
                }
index 99660ba..d77e81a 100644 (file)
@@ -564,15 +564,16 @@ class GContact
 
                if (strlen(Config::get('system', 'directory'))) {
                        $x = Network::fetchUrl(get_server()."/pubsites");
-                       if ($x) {
+                       if (!empty($x)) {
                                $j = json_decode($x);
-                               if ($j->entries) {
+                               if (!empty($j->entries)) {
                                        foreach ($j->entries as $entry) {
                                                PortableContact::checkServer($entry->url);
 
                                                $url = $entry->url . '/poco';
-                                               if (! in_array($url, $done)) {
-                                                       PortableContact::loadWorker(0, 0, 0, $entry->url . '/poco');
+                                               if (!in_array($url, $done)) {
+                                                       PortableContact::loadWorker(0, 0, 0, $url);
+                                                       $done[] = $url;
                                                }
                                        }
                                }