Простая проверка (PHP), чтобы узнать, находится ли радио Shoutcast в сети?

StackOverflow https://stackoverflow.com/questions/1513940

  •  19-09-2019
  •  | 
  •  

Вопрос

По сути, это простой скрипт, который может проверять, находится ли в сети радиостанция Shoutcast или нет, и выводить на основе этого код.

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

Ваше здоровье.

:)

Это было полезно?

Решение

Используйте 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 и сохранять где-нибудь результаты.

Другие советы

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

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

Для этого вам необходимо проверить статус в /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

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

Если это ваше радио (вы знаете пароль и имя пользователя), вы можете использовать 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!');
}
?> 

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top