Простая проверка (PHP), чтобы увидеть, если радио Shoutcast онлайн? - PullRequest
2 голосов
/ 03 октября 2009

В основном, это простой скрипт, который может проверить, работает ли радиостанция shoutcast онлайн или нет, и вывести код на его основе.

Я пытался сделать это с file_get_contents и eregi, но, похоже, это не сработало или было слишком медленно.

Приветствие.

:)

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Сорки ответит хорошо, если вы просто хотите определить, работает ли сервер, но, как указал Гамбо, существуют разные уровни «онлайн».

Например, сервер может быть отключен, чтобы он не принимал потоковые соединения. Сервер может принимать потоковые соединения, но источник может быть отключен.

Для этого вам нужно проверить статус в /7.html. Ударьте это с "Mozilla" в строке пользовательского агента где-нибудь. Вы получите что-то вроде этого:

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

Поле данных:

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

Легко разобрать ... просто взорвать его ().

1 голос
/ 03 октября 2009

Используйте fsockopen и проверьте наличие ошибки.

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

Вы должны попытаться определить timeout, но, возможно, лучше всего регулярно запускать его с большим временем ожидания на фоне cron и сохранять результаты где-нибудь.

0 голосов
/ 16 мая 2012

Если это ваше радио (вы знаете пароль и имя пользователя), вы можете использовать CURL. Попробуйте получить значение $ xml-> STREAMSTATUS из этого куска кода:

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

наслаждаться

...