Added “clean” action

This commit is contained in:
pezcurrel 2022-11-29 08:54:41 +01:00
parent 9394c0cb29
commit 55e0c82eee

View file

@ -20,12 +20,16 @@ define('N',"\n");
$opts=array(
'setold'=>false,
'setold_new_period'=>30*24*60*60,// se un'istanza è nuova, dopo 30 giorni non lo è più
'setblack'=>false,
'shuffle'=>false,
'updstats'=>false,
'clean'=>false,
// Attenzione: non settare questo qua sotto a meno di 12 settimane, perché sul sito instances.php pesca le ultime 12 settimane dai record di "InstActivity"
'clean_before_weeks'=>24,
'clean_tables'=>['InstActivity'=>'Week', 'InstChecks'=>'Time', 'Notifications'=>'Microtime'],
'optimize'=>false,
'deadline'=>60*24*60*60,// se un'istanza non risponde da 60 giorni dichiararla morta
'newline'=>30*24*60*60,// se un'istanza è nuova, dopo 30 giorni non lo è più
// 'deadline'=>60*24*60*60,// se un'istanza non risponde da 60 giorni dichiararla morta
);
$help='mustool.php
@ -43,6 +47,8 @@ $help='mustool.php
Randomizza la lista delle istanze (i valori della colonna RPos).
updstats
Aggiorna le statistiche sul sito.
clean
Cancella i record più vecchi di
optimize
Ottimizza le tabelle del database.
OPZIONI
@ -78,6 +84,9 @@ for ($i=1; $i<$argc; $i++) {
} elseif ($argv[$i]=='updstats') {
$dosome=true;
$opts['updstats']=true;
} elseif ($argv[$i]=='clean') {
$dosome=true;
$opts['clean']=true;
} elseif ($argv[$i]=='optimize') {
$dosome=true;
$opts['optimize']=true;
@ -108,7 +117,7 @@ mysqli_set_charset($link,'utf8mb4')
if ($opts['setold']) {
echo('Setto New=0 per le istanze non più nuove ... ');
mysqli_query($link,'UPDATE Instances SET New=0 WHERE '.time().'-FirstSeen > '.$opts['newline']) or mexit(__LINE__.': '.mysqli_error($link).N,2);
mysqli_query($link,'UPDATE Instances SET New=0 WHERE '.time().'-FirstSeen > '.$opts['setold_new_period']) or mexit(__LINE__.': '.mysqli_error($link).N,2);
echo('fatto! Righe coinvolte: '.mysqli_affected_rows($link).N);
}
@ -203,6 +212,17 @@ if ($opts['updstats']) {
echo('fatto! (righe inserite: '.$inserts.')'.N);
}
if ($opts['clean']) {
$affrows=0;
$ago=time()-($opts['clean_before_weeks']*7*24*60*60);
echo('Cancello i record più vecchi di '.$opts['clean_before_weeks'].' settimane dalle tabelle '.implode(', ',array_keys($opts['clean_tables'])).'...'.N);
foreach ($opts['clean_tables'] as $table=>$tscol) {
$res=mysqli_query($link,'DELETE FROM '.$table.' WHERE '.$tscol.' < '.$ago) or mexit(__LINE__.': '.mysqli_error($link).N,2);
$affrows+=mysqli_affected_rows($link);
}
echo('Fatto! Righe cancellate: '.$affrows.'.'.N);
}
if ($opts['optimize']) {
echo('Ottimizzo le tabelle del database...'.N);
$res=mysqli_query($link,'SHOW TABLES') or mexit(__LINE__.': '.mysqli_error($link).N,2);