Sto provando a creare uno script PHP che verificherà lo stato HTTP di un sito Web il più velocemente possibile.Qualcosa di più veloce di get_headers()
Attualmente sto usando get_headers() ed eseguendolo in un ciclo di 200 URL casuali dal database mysql.
Per controllare tutti i 200 - ci vogliono in media 2m 48s.
C'è qualcosa che posso fare per renderlo (molto) più veloce?
(So di fsockopen - Può controllare la porta 80 su 200 siti in 20 secondi - ma non è la stessa cosa che richiedere il codice di stato http perché il server può rispondere sulla porta - ma potrebbe non caricare i siti web correttamente, ecc.)
Ecco il codice ..
<?php
function get_httpcode($url) {
$headers = get_headers($url, 0);
// Return http status code
return substr($headers[0], 9, 3);
}
###
## Grab task and execute it
###
// Loop through task
while($data = mysql_fetch_assoc($sql)):
$result = get_httpcode('http://'.$data['url']);
echo $data['url'].' = '.$result.'<br/>';
endwhile;
?>
Ciao, ho anche provato a usare cURL - come il codice che hai postato. Ma è lo stesso, un po 'più a lungo di get_headers(); – Clarkey
Prova a fare una richiesta multipla come fornisco il link sopra. Ad esempio 10 richieste per volta – safarov
+1 Bella! Non sapevo che l'estensione del ricciolo potesse elaborare richieste in parallelo. – nnichols