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.

:)

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top