Quiero verificar si un sitio web está activo o inactivo en una instancia particular usando PHP. Llegué a saber que curl buscará el contenido del archivo, pero no quiero leer el contenido del sitio web. Solo quiero verificar el estado del sitio web. ¿Hay alguna forma de verificar el estado del sitio? ¿Podemos usar ping para verificar el estado? Para mí es suficiente obtener las señales de estado (404, 403, etc.) del servidor. Un pequeño fragmento de código podría ayudarme mucho.curl y ping: ¿cómo verificar si un sitio web está activo o inactivo?
Respuesta
algo como esto debería funcionar
$url = 'yoururl';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode) {
// All's well
} else {
// not so much
}
También prefiero configurar 'CURLOPT_CONNECTTIMEOUT' y' CURLOPT_TIMEOUT' para bajar los valores. – machineaddict
@machineaddict ¿Quiere decir "sitio fuera de línea" en lugar de esperar la conexión? No veo la diferencia entre verificar 2 veces por una cosa y esperar unos pocos para la operación actual. – erm3nda
@machineaddict Incluso con CURLOPT_FOLLOWLOCATION establecido en verdadero, todavía devuelve un código de retorno 301 ... ¿Cómo es posible? –
¿Has visto la función get_headers()? http://it.php.net/manual/en/function.get-headers.php. Parece hacer exactamente lo que necesitas.
Si utiliza rizo directamente con la opción -I, devolverá las cabeceras HTTP (404, etc.) en lugar de la página HTML. En PHP, el equivalente es la opción curl_setopt($ch, CURLOPT_NOBODY, 1);
.
ping
no hará lo que está buscando, solo le informará si la máquina está activa (y responde al ping
). Sin embargo, eso no significa necesariamente que el servidor web esté activo.
Puede intentar usar el método http_head - recuperará los encabezados que el servidor web le devuelve. Si el servidor está enviando encabezados, entonces sabrá que está en funcionamiento.
http://ca.php.net/http_head hipervínculo incrustado redirige a http://ca.php.net/manual-lookup.php?pattern=http_head&lang=en&scope=404quickref cual el mensaje siguiente: *** * http_head * no existe. Partidos más cercanos: *. La respuesta debe ser editada para contener la referencia correcta. –
No se puede probar un servidor web con ping
, porque es un servicio diferente. El servidor puede estar ejecutándose, pero el webserver-daemon puede colapsarse de todos modos. Entonces curl es tu amigo. Solo ignora el contenido.
function checkStatus($url) {
$agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; pt-pt) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27";
// initializes curl session
$ch = curl_init();
// sets the URL to fetch
curl_setopt($ch, CURLOPT_URL, $url);
// sets the content of the User-Agent header
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
// make sure you only check the header - taken from the answer above
curl_setopt($ch, CURLOPT_NOBODY, true);
// follow "Location: " redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// disable output verbose information
curl_setopt($ch, CURLOPT_VERBOSE, false);
// max number of seconds to allow cURL function to execute
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
// execute
curl_exec($ch);
// get HTTP response code
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode >= 200 && $httpcode < 300)
return true;
else
return false;
}
// how to use
//===================
if ($this->checkStatus("http://www.dineshrabara.in"))
echo "Website is up";
else
echo "Website is down";
exit;
curl -Is $url | grep HTTP | cut -d ' ' -f2
al proporcionar código que resuelve el problema, lo mejor es también dé al menos una breve explicación de cómo funciona para que la gente que lee no tenga que analizarlo mentalmente línea por línea para entender las diferencias. – Fluffeh
Aquí es cómo lo hice. Configuré el agente de usuario para minimizar la posibilidad de que el objetivo me prohibiera y también deshabilité la verificación SSL ya que conozco el objetivo:
private static function checkSite($url) {
$useragent = $_SERVER['HTTP_USER_AGENT'];
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // do not return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_USERAGENT => $useragent, // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 2, // timeout on connect (in seconds)
CURLOPT_TIMEOUT => 2, // timeout on response (in seconds)
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false, // SSL verification not required
CURLOPT_SSL_VERIFYHOST => false, // SSL verification not required
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ($httpcode == 200);
}
- 1. ¿Cuál es la mejor manera de verificar si un sitio web está activo o no a través de JavaScript
- 2. ¿Cómo verificar si un servicio web está en funcionamiento sin usar ping?
- 3. Ping un sitio web en R
- 4. Script Bash para (más o menos) verificar de manera confiable si Internet está activo
- 5. JQuery: ¿Cómo determinar si el evento Slide está activo o inactivo?
- 6. Cómo saber si un actor está inactivo
- 7. Cómo comprobar si 3g está activo o no en android
- 8. ¿Cómo sabe IIS si está sirviendo un sitio web o un proyecto de aplicación web?
- 9. ¿Cómo puedo saber si NSTimer está activo o no?
- 10. Forma de verificar si TinyMCE está activo en WordPress
- 11. ¿Cómo hacer que RibbonApplicationMenuBar esté inactivo/activo?
- 12. ¿Cómo puedo detectar si el usuario está "inactivo" con javascript?
- 13. Sitio ping y resultado devuelto en PHP
- 14. ¿Hay alguna manera de verificar si el anclaje está activo?
- 15. Ping un sitio en ruby?
- 16. Cómo verificar si un DataGridViewCheckBoxCell está marcado
- 17. ¿Cómo verificar si un objeto está definido?
- 18. ¿Cómo verifica si un sitio web está en línea en C#?
- 19. Cómo encontrar si un sitio web utiliza HSTS
- 20. ¿Comprueba si Mouse LButton está inactivo?
- 21. ¿Cómo puedo detectar si Dispatcher.DisableProcessing está activo?
- 22. cómo comprobar si boost :: deadline_timer está activo
- 23. ¿Cómo verificar un certificado de sitio web en Cocoa Touch?
- 24. Para verificar si un objeto está vacío o no
- 25. Cómo supervisar un nodo de erlang remoto que estaba inactivo y se está reiniciando
- 26. ¿Cómo verificar programáticamente si el hotspot está habilitado o deshabilitado?
- 27. Cómo comprobar si un elemento seleccionado todavía está "abierto"/activo con jquery
- 28. Cómo detectar si una página web se está ejecutando desde un sitio web o sistema de archivos local
- 29. ¿Cómo puedo verificar si existe o no un recurso incrustado?
- 30. Cómo verificar si Android "Datos móviles" está en
¿Cómo se define 'up'? ¿Una página en blanco que devuelve HTTP '200' está activa? – webbiedave
@Nate: ¡Gracias por su edición! Este – brainless