Question

En gros, juste un script simple qui peut vérifier si une radio SHOUTcast est en ligne ou non, et la sortie d'un code basé sur elle.

J'ai essayé de le faire avec file_get_contents et eregi, mais il ne semble pas fonctionner, ou était waaaaay à ralentir.

Vive.

:)

Était-ce utile?

La solution

Utilisez fsockopen et vérifier l'erreur.

$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
}

Vous devez essayer de déterminer la timeout mais il pourrait être préférable d'exécuter ce avec un plus grand délai d'attente régulièrement sur fond avec Cron et enregistrer les résultats quelque part.

Autres conseils

La réponse de Sorki est très bien si vous voulez juste pour déterminer que le serveur est en cours d'exécution, mais comme Gumbo a fait remarquer, il y a différents niveaux de « en ligne ».

Par exemple, le serveur peut être désactivé afin qu'il n'accepte pas les connexions de flux. Le serveur pourrait être accepter les connexions de flux, mais il peut être déconnecté de la source.

Pour cela, vous devez vérifier le statut /7.html. Hit avec « Mozilla » dans la chaîne de l'agent utilisateur quelque part. Vous obtiendrez quelque chose comme ceci:

2,1,22,625,2,128,How Far To Austin - Don't Get Me Wrong

Le champ de données sont:

listeners, status, peak listeners, maximum listeners, unique listeners, bitrate, track meta

Facile à analyser ... juste faire une explode () sur elle.

Si c'est votre radio (vous connaissez le mot de passe et nom d'utilisateur), vous pouvez utiliser un CURL. Essayez obtenir un xml- de $> Valeur STREAMSTATUS de ce morceau de code:

<?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!');
}
?> 

profiter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top