Skip to content

Commit

Permalink
tweak(Tinebase/Logentry): improve cleanup
Browse files Browse the repository at this point in the history
... to remove more entries in one run

better use sql instead of deleteByFilter() for increased performance
  • Loading branch information
pschuele committed Oct 9, 2024
1 parent 277735c commit 4c1d638
Showing 1 changed file with 13 additions and 15 deletions.
28 changes: 13 additions & 15 deletions tine20/Tinebase/Controller/LogEntry.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,27 +64,25 @@ public static function getInstance()
return self::$_instance;
}

public function cleanUp(Tinebase_DateTime $before = null)
/**
* @param Tinebase_DateTime|null $before
* @return bool
*/
public function cleanUp(?Tinebase_DateTime $before = null): bool
{
if (! $before) {
$before = Tinebase_DateTime::now()->subWeek(3);
}

$deleteFilter = Tinebase_Model_Filter_FilterGroup::getFilterForModel(
Tinebase_Model_LogEntry::class, [
['field' => 'timestamp', 'operator' => 'before', 'value' => $before]
]
);
$pagination = new Tinebase_Model_Pagination([
'limit' => 1000,
'sort' => 'timestamp',
'dir' => 'ASC',
'start' => 0,
]);
$this->deleteByFilter($deleteFilter, $pagination);
$db = Tinebase_Core::getDb();
$db->query('DELETE FROM ' . $this->_backend->getTablePrefix() . $this->_backend->getTableName()
. ' where timestamp < "' . $before->format('Y-m-d') . '"'
. ' ORDER BY timestamp ASC LIMIT 50000');

if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ .
' Cleaned up log entries before ' . $before->toString());
if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) {
Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ .
' Cleaned up log entries before ' . $before->toString());
}

return true;
}
Expand Down

0 comments on commit 4c1d638

Please sign in to comment.