]> git.mxchange.org Git - friendica.git/commitdiff
The limit for dbclean is now configurable
authorMichael <heluecht@pirati.ca>
Sun, 21 Oct 2018 05:41:40 +0000 (05:41 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 21 Oct 2018 05:41:40 +0000 (05:41 +0000)
config/config.ini.php
src/Worker/DBClean.php

index ea3df52cbdbdbc11c36d5ab11ea8f23dbb50b026..a324e709ec93c8016b7fbedf97a95eec0b69073c 100644 (file)
@@ -121,9 +121,14 @@ db_loglimit_index_high = 0
 
 ; dbclean_expire_conversation (Integer)
 ; When DBClean is enabled, any entry in the conversation table will be deleted after this many days.
-; These data are normally needed only for debugging purposes and they are safe to delete.
+: This data is used for ActivityPub, so it shouldn't be lower than the average duration of a discussion.
 dbclean_expire_conversation = 90
 
+; dbclean-expire-limit (Integer)
+; This defines the number of items that are to be deleted in a single call.
+; Reduce this value when you are getting memory issues.
+dbclean-expire-limit = 1000
+
 ; diaspora_test (Boolean)
 ; For development only. Disables the message transfer.
 diaspora_test = false
index ca0da954c010ff08c51f3e1876ae13383b2ba620..dba9cfd4c61894a86c0fc35861ff986f94a8c67b 100644 (file)
@@ -63,7 +63,7 @@ class DBClean {
                $count = 0;
 
                // We split the deletion in many small tasks
-               $limit = 1000;
+               $limit = Config::get('system', 'dbclean-expire-limit', 1000);
 
                // Get the expire days for step 8 and 9
                $days = Config::get('system', 'dbclean-expire-days', 0);
@@ -275,7 +275,7 @@ class DBClean {
                                                                        OR (`item`.`file` != '') OR (`item`.`event-id` != '')
                                                                        OR (`item`.`attach` != '') OR `item`.`wall` OR `item`.`origin`)
                                                                        AND `item`.`parent` = `thread`.`iid`)
-                                       ORDER BY `thread`.`iid` LIMIT 1000", $days, $last_id);
+                                       ORDER BY `thread`.`iid` LIMIT ?", $days, $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found expired threads: ".$count);