; 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
$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);
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);