sencilla comprobación (PHP) para ver si la radio Shoutcast está en línea?
Pregunta
Básicamente, sólo un simple script que puede comprobar para ver si una radio Shoutcast está conectado o no, y la salida a un código basado en él.
He intentado hacer esto con file_get_contents y eregi, pero no parece funcionar, o era muuuuchas a disminuir.
Saludos.
:)
Solución
Utilice fsockopen y compruebe si el error.
$fp = fsockopen("www.example.com", 8000, $errno, $errstr, 1); //last param is timeout in seconds
if (!$fp) {
echo "$errstr ($errno)<br />\n"; // radio offline
} else {
fclose($fp); // radio OK
}
Hay que tratar de determinar la timeout
pero podría ser mejor para ejecutar este tiempo de espera con mayor regularidad en el fondo con cron y guardar los resultados en alguna parte.
Otros consejos
La respuesta de Sorki está bien si lo que desea es determinar que el servidor está funcionando, pero como Gumbo señaló, hay diferentes niveles de "en línea".
Por ejemplo, el servidor puede ser desactivado para que no acepta conexiones de corriente. El servidor podría ser aceptar las conexiones de corriente, pero la fuente puede ser desconectado.
Para ello, es necesario comprobar el estado de /7.html. Hit esto con "Mozilla" en la cadena de agente de usuario en alguna parte. Obtendrá algo a cambio como esto:
2,1,22,625,2,128,How Far To Austin - Don't Get Me Wrong
El campo de datos son los siguientes:
listeners, status, peak listeners, maximum listeners, unique listeners, bitrate, track meta
fácil de analizar ... simplemente una reventar () en él.
Si se trata de su radio (ya saben la contraseña y nombre de usuario), se puede utilizar un rizo. Intenta conseguir un $ xml-> valor STREAMSTATUS de ese trozo de código:
<?php
$useragent = "Mozilla (DNAS 2 Statuscheck)";
$sc_host = '192.168.0.1';
$sc_port = '8000';
$sc_user = 'admin';
$sc_pass = 'XXXXX';
$sc_sid = '1';
$ch = curl_init($sc_host . '/admin.cgi?mode=viewxml&sid=$sc_sid');
curl_setopt($ch, CURLOPT_PORT, $sc_port);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $sc_user . ':' . $sc_pass);
$curl = curl_exec($ch);
if ($curl)
{
$xml = simplexml_load_string($curl);
// THIS IS THE ANSWER FOR YOUR QUESTION:
var_dump($xml->STREAMSTATUS);
// if retuns 1 - radio is online
// if retuns 0 - radio is offline
}
else
{
die('Could not connect to dnas-server!');
}
?>
disfrutar