From: Michael <heluecht@pirati.ca>
Date: Fri, 12 May 2017 16:09:25 +0000 (+0000)
Subject: dba functions in poller / avoiding SQL errors in conversation / dbclean is better
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=377fe3190744c644f61a4dc125314e3d6b4bac68;p=friendica.git

dba functions in poller / avoiding SQL errors in conversation / dbclean is better
---

diff --git a/include/dbclean.php b/include/dbclean.php
index 3b3ea70392..64185b39d9 100644
--- a/include/dbclean.php
+++ b/include/dbclean.php
@@ -18,13 +18,11 @@ function dbclean_run(&$argv, &$argc) {
 	}
 
 	if ($stage == 0) {
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 1);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 2);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 3);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 4);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 5);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 6);
-		proc_run(PRIORITY_LOW, 'include/dbclean.php', 7);
+		for ($i = 1; $i <= 7; $i++) {
+			if (!Config::get('system', 'finished-dbclean-'.$i)) {
+				proc_run(PRIORITY_LOW, 'include/dbclean.php', $i);
+			}
+		}
 	} else {
 		remove_orphans($stage);
 	}
@@ -54,6 +52,9 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No global item orphans found");
+
+			// We will eventually set this value when we found a good way to delete these items in another way.
+			// Config::set('system', 'finished-dbclean-1', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." old global item entries from item table without user copy");
@@ -68,6 +69,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No item orphans without parents found");
+			Config::set('system', 'finished-dbclean-2', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." items without parents");
@@ -82,6 +84,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No thread orphans found");
+			Config::set('system', 'finished-dbclean-3', true);
 		}
 
 		dba::close($r);
@@ -97,6 +100,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No notify orphans found");
+			Config::set('system', 'finished-dbclean-4', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." orphaned data from notify table");
@@ -111,6 +115,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No notify-threads orphans found");
+			Config::set('system', 'finished-dbclean-5', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." orphaned data from notify-threads table");
@@ -125,6 +130,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No sign orphans found");
+			Config::set('system', 'finished-dbclean-6', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." orphaned data from sign table");
@@ -139,6 +145,7 @@ function remove_orphans($stage = 0) {
 			}
 		} else {
 			logger("No term orphans found");
+			Config::set('system', 'finished-dbclean-7', true);
 		}
 		dba::close($r);
 		logger("Done deleting ".$count." orphaned data from term table");
diff --git a/include/items.php b/include/items.php
index 820c79e13d..c36b842b4b 100644
--- a/include/items.php
+++ b/include/items.php
@@ -501,6 +501,20 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		}
 	}
 
+	if ($notify) {
+		$guid_prefix = "";
+	} elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
+		$arr['guid'] = uri_to_guid($arr['plink']);
+	} elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
+		$arr['guid'] = uri_to_guid($arr['uri']);
+	} else {
+		$parsed = parse_url($arr["author-link"]);
+		$guid_prefix = hash("crc32", $parsed["host"]);
+	}
+
+	$arr['guid']          = ((x($arr, 'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
+	$arr['uri']           = ((x($arr, 'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
+
 	// Store conversation data
 	$arr = store_conversation($arr);
 
@@ -585,20 +599,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 
 	item_add_language_opt($arr);
 
-	if ($notify) {
-		$guid_prefix = "";
-	} elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
-		$arr['guid'] = uri_to_guid($arr['plink']);
-	} elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
-		$arr['guid'] = uri_to_guid($arr['uri']);
-	} else {
-		$parsed = parse_url($arr["author-link"]);
-		$guid_prefix = hash("crc32", $parsed["host"]);
-	}
-
 	$arr['wall']          = ((x($arr, 'wall'))          ? intval($arr['wall'])                : 0);
-	$arr['guid']          = ((x($arr, 'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
-	$arr['uri']           = ((x($arr, 'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
 	$arr['extid']         = ((x($arr, 'extid'))         ? notags(trim($arr['extid']))         : '');
 	$arr['author-name']   = ((x($arr, 'author-name'))   ? trim($arr['author-name'])   : '');
 	$arr['author-link']   = ((x($arr, 'author-link'))   ? notags(trim($arr['author-link']))   : '');
diff --git a/include/poller.php b/include/poller.php
index eb97d48531..ae249ffe46 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -121,12 +121,8 @@ function poller_execute($queue) {
 		return false;
 	}
 
-	$upd = q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d AND `pid` = 0",
-		dbesc(datetime_convert()),
-		intval($mypid),
-		intval($queue["id"]));
-
-	if (!$upd) {
+	if (!dba::update('workerqueue', array('executed' => datetime_convert(), 'pid' => $mypid),
+			array('id' => $queue["id"], 'pid' => 0))) {
 		logger("Couldn't update queue entry ".$queue["id"]." - skip this execution", LOGGER_DEBUG);
 		dba::commit();
 		return true;
@@ -156,7 +152,7 @@ function poller_execute($queue) {
 
 	if (!validate_include($include)) {
 		logger("Include file ".$argv[0]." is not valid!");
-		q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
+		dba::delete('workerqueue', array('id' => $queue["id"]));
 		return true;
 	}
 
@@ -168,7 +164,7 @@ function poller_execute($queue) {
 
 		poller_exec_function($queue, $funcname, $argv);
 
-		q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
+		dba::delete('workerqueue', array('id' => $queue["id"]));
 	} else {
 		logger("Function ".$funcname." does not exist");
 	}
@@ -376,8 +372,8 @@ function poller_kill_stale_workers() {
 
 	foreach ($r AS $pid) {
 		if (!posix_kill($pid["pid"], 0)) {
-			q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = 0 WHERE `pid` = %d",
-				dbesc(NULL_DATE), intval($pid["pid"]));
+			dba::update('workerqueue', array('executed' => NULL_DATE, 'pid' => 0),
+					array('pid' => $pid["pid"]));
 		} else {
 			// Kill long running processes
 
@@ -401,12 +397,9 @@ function poller_kill_stale_workers() {
 				// We killed the stale process.
 				// To avoid a blocking situation we reschedule the process at the beginning of the queue.
 				// Additionally we are lowering the priority.
-				q("UPDATE `workerqueue` SET `executed` = '%s', `created` = '%s',
-							`priority` = %d, `pid` = 0 WHERE `pid` = %d",
-					dbesc(NULL_DATE),
-					dbesc(datetime_convert()),
-					intval(PRIORITY_NEGLIGIBLE),
-					intval($pid["pid"]));
+				dba::update('workerqueue',
+						array('executed' => NULL_DATE, 'created' => datetime_convert(), 'priority' => PRIORITY_NEGLIGIBLE, 'pid' => 0),
+						array('pid' => $pid["pid"]));
 			} else {
 				logger("Worker process ".$pid["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG);
 			}