From d3a6ebfe7e7ba2fca35968c0ffc602f332a7c4a1 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Thu, 10 Sep 2015 23:10:31 +0200
Subject: [PATCH] The worker is now working

---
 boot.php             | 27 +++++++++++++++------------
 include/onepoll.php  |  2 +-
 include/poller.php   | 19 ++-----------------
 include/socgraph.php |  6 ++++--
 include/worker.php   | 31 +++++++++++++++++++++++++++----
 5 files changed, 49 insertions(+), 36 deletions(-)

diff --git a/boot.php b/boot.php
index 7f3238013..b3b926521 100644
--- a/boot.php
+++ b/boot.php
@@ -1433,21 +1433,24 @@ if(! function_exists('proc_run')) {
 			return;
 
 		if(count($args) && $args[0] === 'php') {
-			$argv = $args;
-			array_shift($argv);
 
-			$parameters = json_encode($argv);
-			$found = q("SELECT `id` FROM `workerqueue` WHERE `parameter` = '%s'",
-					dbesc($parameters));
+			if (get_config("system", "worker")) {
+				$argv = $args;
+				array_shift($argv);
 
-			if (!$found)
-				q("INSERT INTO `workerqueue` (`parameter`, `created`, `priority`)
-							VALUES ('%s', '%s', %d)",
-					dbesc($parameters),
-					dbesc(datetime_convert()),
-					intval(0));
+				$parameters = json_encode($argv);
+				$found = q("SELECT `id` FROM `workerqueue` WHERE `parameter` = '%s'",
+						dbesc($parameters));
 
-			// return;
+				if (!$found)
+					q("INSERT INTO `workerqueue` (`parameter`, `created`, `priority`)
+								VALUES ('%s', '%s', %d)",
+						dbesc($parameters),
+						dbesc(datetime_convert()),
+						intval(0));
+
+				return;
+			}
 
 			$args[0] = ((x($a->config,'php_path')) && (strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
 		}
diff --git a/include/onepoll.php b/include/onepoll.php
index 1fc861afa..e8fc97b21 100644
--- a/include/onepoll.php
+++ b/include/onepoll.php
@@ -360,7 +360,7 @@ function onepoll_run(&$argv, &$argc){
 				);
 				logger("Mail: Connected to " . $mailconf[0]['user']);
 			} else
-				logger("Mail: Connection error ".$mailconf[0]['user']." ".print_r(imap_errors()));
+				logger("Mail: Connection error ".$mailconf[0]['user']." ".print_r(imap_errors(), true));
 		}
 		if($mbox) {
 
diff --git a/include/poller.php b/include/poller.php
index 28dc0c0cd..e47ab3782 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -75,22 +75,6 @@ function poller_run(&$argv, &$argc){
 
 	logger('poller: start');
 
-	// run queue delivery process in the background
-
-	proc_run('php',"include/queue.php");
-
-	// run diaspora photo queue process in the background
-
-	proc_run('php',"include/dsprphotoq.php");
-
-	// run the process to discover global contacts in the background
-
-	proc_run('php',"include/discover_poco.php");
-
-	// run the process to update locally stored global contacts in the background
-
-	proc_run('php',"include/discover_poco.php", "checkcontact");
-
 	// expire any expired accounts
 
 	q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
@@ -119,7 +103,8 @@ function poller_run(&$argv, &$argc){
 	check_conversations(false);
 
 	// Follow your friends from your legacy OStatus account
-	ostatus_check_follow_friends();
+	// Doesn't work
+	// ostatus_check_follow_friends();
 
 	// update nodeinfo data
 	nodeinfo_cron();
diff --git a/include/socgraph.php b/include/socgraph.php
index 97daae1d2..6e2b6ea15 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -1338,8 +1338,10 @@ function poco_discover($complete = false) {
 				q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
 				if (!$complete AND (--$no_of_queries == 0))
 					break;
-			} else	// If the server hadn't replied correctly, then force a sanity check
-				poco_check_server($server["url"], $server["network"], true);
+			// If the server hadn't replied correctly, then force a sanity check
+			} elseif (!poco_check_server($server["url"], $server["network"], true))
+				q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
+
 		}
 }
 
diff --git a/include/worker.php b/include/worker.php
index e1eee388c..c1d9202ba 100755
--- a/include/worker.php
+++ b/include/worker.php
@@ -26,6 +26,25 @@ if(is_null($db)) {
 	unset($db_host, $db_user, $db_pass, $db_data);
 };
 
+// run queue delivery process in the background
+
+proc_run('php',"include/queue.php");
+
+// run diaspora photo queue process in the background
+
+proc_run('php',"include/dsprphotoq.php");
+
+// run the process to discover global contacts in the background
+
+proc_run('php',"include/discover_poco.php");
+
+// run the process to update locally stored global contacts in the background
+
+proc_run('php',"include/discover_poco.php", "checkcontact");
+
+// When everything else is done ...
+proc_run("php","include/poller.php");
+
 // Cleaning killed processes
 $r = q("SELECT DISTINCT(`pid`) FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");
 foreach($r AS $pid)
@@ -36,9 +55,12 @@ foreach($r AS $pid)
 // Checking number of workers
 $workers = q("SELECT COUNT(*) AS `workers` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");
 
-$threads = 3;
+$queues = intval(get_config("system", "worker_queues"));
 
-if ($workers[0]["workers"] >= $threads)
+if ($queues == 0)
+	$queues = 4;
+
+if ($workers[0]["workers"] >= $queues)
 	return;
 
 while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `created` LIMIT 1")) {
@@ -58,11 +80,12 @@ while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:
 
 	if (function_exists($funcname)) {
 		logger("Process ".getmypid().": ".$funcname." ".$r[0]["parameter"]);
-		//$funcname($argv, $argc);
-		sleep(10);
+		$funcname($argv, $argc);
+		//sleep(10);
 		logger("Process ".getmypid().": ".$funcname." - done");
 
 		q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($r[0]["id"]));
 	}
 }
+
 ?>