Translated to english; added “resurrect” action

This commit is contained in:
pezcurrel 2022-12-02 16:08:10 +01:00
parent 632202b69c
commit 63b9271299

View file

@ -24,27 +24,30 @@ $opts=array(
// Warning reminder: don't "clean" InstChecks table because its data is necessary to determine if an instance is dead
'clean'=>false,
'clean_before_weeks'=>24,
'optimize'=>false,
'resurrect'=>false,
'optimize'=>false
);
$help='mustool.php
DESCRIZIONE
mustool.php fa tante cose sul database delle istanze di Mastodon Help.
SINOSSI
mustool.php [opzioni] <azione[ azione...]>
AZIONI
DESCRIPTION
mustool.php can do lots of things on Mastodon Helps database.
SINOPSIS
mustool.php [options] <action[ action][ action][ ...]>
Actions
shuffle
Randomizza la lista delle istanze (i valori della colonna RPos).
Randomizes instances list (values in «RPos» column).
updstats
Aggiorna le statistiche sul sito.
Updates sites statistics.
clean
Cancella i record più vecchi di '.$opts['clean_before_weeks'].' settimane
dalla tabella Notifications.
Deletes records older than '.$opts['clean_before_weeks'].' weeks from
«Notifications» table.
resurrect
Sets «Dead=0» on all «Instances» records.
optimize
Ottimizza le tabelle del database.
OPZIONI
Optimizes all the tables in the database.
OPTIONS
-h, --help
Mostra questo aiuto ed esce.
Shows this help text and exits.
This program comes with ABSOLUTELY NO WARRANTY; for details see the source.
This is free software, and you are welcome to redistribute it under
@ -60,7 +63,7 @@ for ($i=1; $i<$argc; $i++) {
mexit($help,0);
break;
default:
mexit('Lopzione «'.$argv[$i].'» è sconosciuta (usa «-h» per vedere la guida).'.N,1);
mexit('Option «'.$argv[$i].'» is unknown (use «-h» to read help).'.N,1);
break;
}
} elseif ($argv[$i]=='shuffle') {
@ -72,15 +75,18 @@ for ($i=1; $i<$argc; $i++) {
} elseif ($argv[$i]=='clean') {
$dosome=true;
$opts['clean']=true;
} elseif ($argv[$i]=='resurrect') {
$dosome=true;
$opts['resurrect']=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);
mexit('«'.$argv[$i].is an unknown action (use «-h» to read help).'.N,1);
}
}
if (!$dosome) mexit('Nessuna azione specificata (usa «-h» per vedere la guida).'.N,1);
if (!$dosome) mexit('No actions was specified (use «-h» to read help).'.N,1);
use function mysqli_real_escape_string as myesc;
@ -94,20 +100,20 @@ function mexit($msg,$code) {
$inifp=__DIR__.'/../conf/mustard.ini';
$iniarr=@parse_ini_file($inifp)
or mexit('Impossibile aprire il file di configurazione «'.$inifp.'»'.N,1);
or mexit('Could not open configuration file «'.$inifp.'»'.N,1);
$link=@mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket'])
or mexit('Impossibile connettersi al server MySQL: '.mysqli_connect_error().N,1);
or mexit('Could not connect to MySQL server: '.mysqli_connect_error().N,1);
mysqli_set_charset($link,'utf8mb4')
or mexit(__LINE__.': '.mysqli_error($link).N,1);
or mexit('Could not set MySQL connection charset to «utf8mb4»: '.mysqli_error($link).N,1);
/*if ($opts['setold']) {
echo('Setto New=0 per le istanze non più nuove ... ');
echo('Setting «New=0» for instances which are no longer new ... ');
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);
echo('done! Affected rows: '.mysqli_affected_rows($link).'.'.N);
}*/
if ($opts['shuffle']) {
echo('Randomizzo i valori della colonna RPos ... ');
echo('Randomizing values in «RPos» column ... ');
$res=mysqli_query($link,'SELECT ID FROM Instances') or mexit(__LINE__.': '.mysqli_error($link).N,2);
$i=0;
while ($row=mysqli_fetch_assoc($res)) {
@ -117,15 +123,15 @@ if ($opts['shuffle']) {
shuffle($buf);
foreach ($buf as $key=>$val)
mysqli_query($link,'UPDATE Instances SET RPos='.$val.' WHERE ID='.$key) or mexit(__LINE__.': '.mysqli_error($link).N,2);
echo('fatto!'.N);
echo('done! Affected rows: '.count($buf).'.'.N);
}
if ($opts['updstats']) {
$day=24*60*60;
$now=time();
$tdstart=gmmktime(0,0,0,gmdate('n',$now),gmdate('j',$now),gmdate('Y',$now));
//echo('Oggi è cominciato a '.$tdstart.' ('.gmdate('d M Y H:i:s',$tdstart).').'.N);
// questo qui sotto, se abilitato con "0==0", popola DISTRUTTIVAMENTE per test la tabella ZHits
//echo('Today started at '.$tdstart.' ('.gmdate('d M Y H:i:s',$tdstart).').'.N);
// this below, if enabled with "0==0", populates DESTRUCTIVELY table ZHits for testing purposes
if (1==0) {
mysqli_query($link,'DELETE FROM ZHits WHERE TS < '.$tdstart);
mysqli_query($link,'DELETE FROM ZStats');
@ -145,9 +151,9 @@ if ($opts['updstats']) {
if (mysqli_num_rows($res)>0) {
$row=mysqli_fetch_assoc($res);
$dstart=gmmktime(0,0,0,gmdate('n',$row['TS']),gmdate('j',$row['TS']),gmdate('Y',$row['TS']));
echo('Aggiorno le statistiche ... ');
echo('Updating statistics ... ');
} else {
echo('Le statistiche sono già aggiornate :-)'.N);
echo('Statistics are already up to date :-)'.N);
mysqli_close($link);
exit(0);
}
@ -155,9 +161,10 @@ if ($opts['updstats']) {
while ($dstart<$tdstart) {
//echo('-------- '.gmdate('d M Y H:i:s',$dstart).' ---------'.N);
$inserts++;
// questo qui sotto dev'essere sincronizzato con le lingue supportate e le url che serviamo (vedi index.php)
$hits=0;
// this line below must be synced with $supplangs in ../site/index.php
$hitslang=array('ca'=>0, 'en'=>0, 'es'=>0, 'fr'=>0, 'gl'=>0, 'it'=>0, 'uk'=>0);
// this line below must be synced with the urls we consider, see ../site/index.php
$hitspage=array('home'=>0, 'instances'=>0, 'about'=>0, 'stats'=>0, 'contribute'=>0, '404'=>0);
$visits=0;
$buf=array();
@ -185,19 +192,24 @@ if ($opts['updstats']) {
$dstart+=$day;
}
mysqli_query($link,'DELETE FROM ZHits WHERE TS < '.$tdstart) or mexit(__LINE__.': '.mysqli_error($link).N,2);
echo('fatto! (righe inserite: '.$inserts.')'.N);
echo('done! Affected rows: '.$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 dalla tabella Notifications...'.N);
echo('Cleaning records older than '.$opts['clean_before_weeks'].' weeks from «Notifications» table...'.N);
$res=mysqli_query($link,'DELETE FROM Notifications WHERE Microtime < '.$ago) or mexit(__LINE__.': '.mysqli_error($link).N,2);
echo('Fatto! Righe cancellate: '.mysqli_affected_rows($link).'.'.N);
echo('Done! Affected rows:: '.mysqli_affected_rows($link).'.'.N);
}
if ($opts['resurrect']) {
echo('Setting «Dead=0» for records with «Dead!=0»...'.N);
$res=mysqli_query($link,'UPDATE Instances SET Dead=0 WHERE Dead!=0') or mexit(__LINE__.': '.mysqli_error($link).N,2);
echo('Done! Affected rows:: '.mysqli_affected_rows($link).'.'.N);
}
if ($opts['optimize']) {
echo('Ottimizzo le tabelle del database...'.N);
echo('Optimizing all the tables in the 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);
@ -205,7 +217,7 @@ if ($opts['optimize']) {
if ($rrow['Msg_type']=='error' || $rrow['Msg_type']=='warning')
fwrite(STDERR,kimplode($rrow).N);
}
echo('Fatto!'.N);
echo('Done!'.N);
}
mysqli_close($link);