Ciao a tutti.
Sto realizzando un piccolo spiderino che avrà la funzione di cercare news rss riguardanti Messina.
Premetto che di Spider probabilmente non ne so moltissimo per ora, ma ho chiaramente intenzione di approfondire l'argomento man mano che vado avanti con il progetto.
Intanto ho cercato di creare come base, uno scrip che funzioni indipendente dai browser...non essendo però sicuro della qualità del codice, vi posto le poche righe che ho creato, così che eventualmente possiate dirmi tutti più o meno queste parole: "Ma che hai combinato???" magari mi consiglierete voi un sistema migliore!
script indipendente
Codice PHP:
function intervallo(){ //Restituisce True a intervalli di 10 secondi (solo per rallentare il processo)
$s=date("s",time());
if ($s==="00" OR $s==="09" OR $s==="19" OR $s==="29" OR $s==="39" OR $s==="49")
return true;
else
return false;
}
set_time_limit(0);
$num=1;
$query="UPDATE `check` SET `val`=1;";
$rslt = mysql_query($query,$db) or die("Accesso fallito: " . mysql_error() );
$row['val']=1;
while($row['val']){
if(intervallo()){
$query="UPDATE `check` SET `cicli`=$num;";
$rslt = mysql_query($query,$db) or die("Accesso fallito: " . mysql_error() );
$num++;
$query="SELECT `val` FROM `check` LIMIT 1";
$rslt = mysql_query($query,$db) or die("Accesso fallito: " . mysql_error() );
$row = mysql_fetch_array($rslt);
}
}
Semplicissimo pannello di controllo
Codice PHP:
<form name="form" method="post" enctype="multipart/form-data" action="?p=stop">
<input type="submit" value="Stop">
</form>
[url="spider.php"]Start[/url]
<?php
$dbhost = "localhost";
$name = "root";
$pswd = "Chiave02";
$dbname = "prova";
$db = mysql_connect($dbhost,$name,$pswd) or die("Connessione non riuscita: " . mysql_error());
mysql_select_db($dbname) or die("Selezione del database non riuscita");
$query="SELECT * FROM `check` LIMIT 1";
$rslt = mysql_query($query,$db) or die("Accesso fallito: " . mysql_error() );
$row = mysql_fetch_array($rslt);
echo "<h1>".$row['cicli']."</h1>";
if (isset($_GET['p']) AND $_GET['p']==="stop"){
$query="UPDATE `check` SET `val`=0;";
$rslt = mysql_query($query,$db) or die("Accesso fallito: " . mysql_error() );
echo "<h2>Ultimo ciclo.</h2>";
}
else if ($row['val']==="0")
echo "<h2>Crawler fermo.</h2>";
?>
Riassumendo il codice: Ogni 10 secondi viene aggiunto 1 al valore di partenza $num=0 e salvato nel database per poter verificare visivamente (dal pannello di controllo) che anche dopo aver chiuso la pagina lo script continua a girare.
Per avviarlo, apro lo script con il browser e quando chiudo quest'ultimo lo script continua a girare. Nel pannello di controllo infatti, ad ogni mio refresh, si visualizza il numero di cicli che lo script ha eseguito ($num salvato sul database).
Per fermarlo, dal pannello di controllo aggiorno la riga 'val' della tabella 'check' a 0 e quindi al prossimo ciclo lo script uscirà dal while.
Pensate che sia qualcosa di corretto, o che magari ho creato un obbrobrio? Come ho detto in materia di Crawler non me ne intendo ancora, magari dovrei fare diversamente, se si come?
Grazie a tutti.
Valerio