Added “optimize” action to optimize every table in the db

This commit is contained in:
pezcurrel 2022-11-09 14:44:21 +01:00
parent d4de4675ec
commit e7ec2eba39

View file

@ -23,6 +23,7 @@ $opts=array(
'setblack'=>false,
'shuffle'=>false,
'updstats'=>false,
'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ù
);
@ -42,6 +43,8 @@ $help='mustool.php
Randomizza la lista delle istanze (i valori della colonna RPos).
updstats
Aggiorna le statistiche sul sito.
optimize
Ottimizza le tabelle del database.
OPZIONI
-h, --help
Mostra questo aiuto ed esce.
@ -75,6 +78,9 @@ for ($i=1; $i<$argc; $i++) {
} elseif ($argv[$i]=='updstats') {
$dosome=true;
$opts['updstats']=true;
} elseif ($argv[$i]=='optimize') {
$dosome=true;
$opts['optimize']=true;
} else {
mexit('«'.$argv[$i].'» non è unazione conosciuta (usa «-h» per vedere la guida).'.N,1);
}
@ -197,8 +203,27 @@ if ($opts['updstats']) {
echo('fatto! (righe inserite: '.$inserts.')'.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);
while ($row=mysqli_fetch_row($res)) {
$rres=mysqli_query($link,'OPTIMIZE TABLE '.$row[0]) or mexit(__LINE__.': '.mysqli_error($link).N,2);
$rrow=mysqli_fetch_assoc($rres);
if ($rrow['Msg_type']=='error' || $rrow['Msg_type']=='warning')
fwrite(STDERR,kimplode($rrow).N);
}
echo('Fatto!'.N);
}
mysqli_close($link);
exit(0);
function kimplode(&$arr) {
$buf=[];
foreach ($arr as $key=>$val)
$buf[]=$key.': '.$val;
return(implode('; ',$buf));
}
?>