Estoy tratando de hacer un script PHP que verifique el estado HTTP de un sitio web lo más rápido posible.Algo más rápido que get_headers()
Actualmente estoy usando get_headers() y ejecutándolo en un bucle de 200 URL aleatorios de la base de datos mysql.
Para verificar todos los 200, toma un promedio de 2m 48s.
¿Hay algo que pueda hacer para que sea (mucho) más rápido?
(Sé de fsockopen: puede verificar el puerto 80 en 200 sitios en 20, pero no es lo mismo que solicitar el código de estado http porque el servidor puede responder en el puerto, pero puede que no esté cargando sitios web correctamente, etc.)
Este es el código ..
<?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;
?>
Hola, también he intentado usar cURL, como el código que ha publicado. Pero es lo mismo, de hecho un poco más largo que get_headers(); – Clarkey
Intente hacer una solicitud múltiple como le doy el enlace de arriba. Por ejemplo, 10 solicitudes por tiempo – safarov
+1 ¡Bonito! No sabía que la extensión curl podría procesar solicitudes en paralelo. – nnichols