Added authlog purge + improved efficiency of clearing out large syslog tables

This commit is contained in:
laf
2014-10-02 01:37:43 +01:00
parent 10e24653be
commit 8e00599d2a
3 changed files with 23 additions and 2 deletions

View File

@@ -16,9 +16,21 @@ if ( $options['f'] === 'update') { echo $config['update']; }
if ( $options['f'] === 'syslog') {
if ( is_numeric($config['syslog_purge'])) {
if ( dbDelete('syslog', "timestamp < DATE_SUB(NOW(), INTERVAL ? DAY)", array($config['syslog_purge'])) ) {
echo 'Syslog cleared for entries over ' . $config['syslog_purge'] . " days\n";
$rows = dbFetchRow("SELECT MIN(seq) FROM syslog");
$loop = 1;
while($loop == 1) {
$limit = dbFetchRow("SELECT seq FROM syslog WHERE seq >= ? ORDER BY seq LIMIT 1000,1", array($rows));
if(empty($limit)) {
$loop = 0;
}
if ( dbDelete('syslog', "seq >= ? AND seq < ? AND timestamp < DATE_SUB(NOW(), INTERVAL ? DAY)", array($rows,$limit,$config['syslog_purge'])) > 0) {
$rows = $limit;
echo 'Syslog cleared for entries over ' . $config['syslog_purge'] . " days 1000 limit\n";
} else {
$loop = 0;
}
}
dbDelete('syslog', "seq >= ? AND timestamp < DATE_SUB(NOW(), INTERVAL ? DAY)", array($rows,$config['syslog_purge']));
}
}
if ( $options['f'] === 'eventlog') {
@@ -28,5 +40,12 @@ if ( $options['f'] === 'eventlog') {
}
}
}
if ( $options['f'] === 'authlog') {
if ( is_numeric($config['authlog_purge'])) {
if ( dbDelete('authlog', "datetime < DATE_SUB(NOW(), INTERVAL ? DAY)", array($config['authlog_purge'])) ) {
echo 'Authlog cleared for entries over ' . $config['authlog_purge'] . " days\n";
}
}
}
?>

View File

@@ -7,3 +7,4 @@ fi
php daily.php -f syslog
php daily.php -f eventlog
php daily.php -f authlog

View File

@@ -572,6 +572,7 @@ $config['update'] = 1;
# Purge syslog and eventlog
$config['syslog_purge'] = 30; # Number in days of how long to keep syslog entries for.
$config['eventlog_purge'] = 30; # Number in days of how long to keep eventlog entries for.
$config['authlog_purge'] = 30; # Number in days of how long to keep authlog entries for.
# Date format for PHP date()s
$config['dateformat']['long'] = "r"; # RFC2822 style