Aggiunta la possibilità di passargli opzioni da riga di comando; sistemato un bacone; eliminata una funzione non utilizzata.

This commit is contained in:
pezcurrel 2020-05-17 11:12:28 +02:00
parent 8d276bcd94
commit 0cdf966ec8

View file

@ -61,42 +61,83 @@ $opts=array(
'log'=>false,
'jsonfp'=>__DIR__.'/instances.json',
'jsonwrite'=>false,
'peersfp'=>__DIR__.'peers'
'peersfp'=>__DIR__.'/peers'
);
use function mysqli_real_escape_string as myesc;
$help='crawler.php
DESCRIZIONE
Popola/aggiorna il database di mastostart con i dati che riesce
a recuperare da una lista di istanze composta da quelle già presenti
nel database più quelle di un file specificabile (tipicamente il file
di output di peerscrawl.php).
È possibile fermarne lesecuzione per riprenderla in un secondo tempo:
il programma genera, durante lesecuzione, una lista delle istanze che
deve controllare («instances.job») e un file in cui viene salvata lultima
istanza controllata e altri dati; per riprendere lesecuzione dove
era stata lasciata basta lanciare nuovamente il programma; per evitare
che il programma riprenda da dove era arrivato durante lesecuzione
precedente basta cancellare i due file di cui sopra.
SYNOPSIS
peerscrawl.php [options]
OPTIONS
-p, --peersfp <file>
Definisce il file da cui caricare la lista delle istanze di cui cercare
di recuperare i dati. Nota: questa opzione è ininfluente se il programma
viene lanciato per riprendere unesecuzione precedente interrotta.
DEFAULT: «'.$opts['peersfp'].'»
-t, --timeout <secondi>
Definisce il timeout in secondi di ogni tentativo di connessione.
DEFAULT: «'.$opts['timeout'].'»
-l, --log
Attiva il logging delloutput nel file «crawler.php» nella stessa
directory di crawler.php.
-j, --jsonwrite
Attiva la scrittura di un file «instances.json» nella stessa directory
di crawler.php, contenente tutti i dati recuperati da tutte le istanze.
function tosec($str) {
if (preg_match('/^([0-9]+)([smogSMA]?)/',$str,$buf)===1) {
switch ($buf[2]) {
case '':
case 's':
return($buf[1]);
This program comes with ABSOLUTELY NO WARRANTY; for details see the source.
This is free software, and you are welcome to redistribute it under
certain conditions; see <http://www.gnu.org/licenses/> for details.'.N;
for ($i=1; $i<$argc; $i++) {
if (substr($argv[$i],0,1)=='-') {
switch($argv[$i]) {
case '-p':
case '--peersfp':
if ($i+1>=$argc || !file_exists($argv[$i+1]) || !is_file($argv[$i+1]) || !is_readable($argv[$i+1]))
mexit('Lopzione «'.$argv[$i].'» richiede come parametro un file esistente e leggibile (usa «-h» per vedere la guida).'.N,1);
$i++;
$opts['peersfp']=$argv[$i];
break;
case 'm':
return($buf[1]*60);
case '-t':
case '--timeout':
if ($i+1>=$argc || preg_match('/[0-9]+/',$argv[$i+1])!==1)
mexit('Lopzione «'.$argv[$i].'» richiede un parametro numerico (usa «-h» per vedere la guida).'.N,1);
$i++;
$opts['timeout']=$argv[$i]+0;
break;
case 'o':
return($buf[1]*60*60);
case '-l':
case '--log':
$opts['log']=true;
$i++;
break;
case 'g':
return($buf[1]*60*60*24);
case '-j':
case '--jsonwrite':
$opts['jsonwrite']=true;
break;
case 'S':
return($buf[1]*60*60*24*7);
case '-h':
case '--help':
mexit($help,0);
break;
case 'M':
return($buf[1]*60*60*24*30);
break;
case 'A':
return($buf[1]*60*60*24*365);
default:
mexit('Lopzione «'.$argv[$i].'» è sconosciuta (usa «-h» per vedere la guida).'.N,1);
break;
}
} else {
return(false);
}
}
use function mysqli_real_escape_string as myesc;
function mexit($msg,$code) {
global $link, $jsonf, $logf;
lecho($msg);
@ -113,7 +154,7 @@ function lecho($msg,$logonly=false) {
global $opts, $logf;
if (!$logonly)
echo($msg);
if ($opts['log'])
if ($opts['log'] && $logf!==false)
fwrite($logf,$msg);
}