]> git.mxchange.org Git - friendica.git/commitdiff
dba functions in poller / avoiding SQL errors in conversation / dbclean is better
authorMichael <heluecht@pirati.ca>
Fri, 12 May 2017 16:09:25 +0000 (16:09 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 12 May 2017 16:09:25 +0000 (16:09 +0000)
include/dbclean.php
include/items.php
include/poller.php

index 3b3ea7039248bc895ef2e1f5b46801b902fc8217..64185b39d9ccdf6fa71740a2ae82dd858f98790f 100644 (file)
@@ -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");
index 820c79e13d6bc22ec7c5fcf1579d7ca3f3a3012d..c36b842b4b149b638a62063ab1287b3d5a496145 100644 (file)
@@ -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']))   : '');
index eb97d48531247fc630d41fc71f6f3aba48e2fdd6..ae249ffe46ddc41f8be766534fdfbaa7b4e1c696 100644 (file)
@@ -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);
                        }