2

基本上,只是一个简单的脚本,可以检查广播电台是否在线,并根据它输出代码。

我试图用 file_get_contents 和 eregi 来做这件事,但它似乎没有用,或者是 waaaaaay 变慢了。

干杯。

:)

4

3 回答 3

3

如果您只是想确定服务器是否正在运行,Sorki 的回答很好,但正如 Gumbo 指出的那样,“在线”存在不同级别。

例如,服务器可能被禁用,因此它不接受流连接。服务器可能正在接受流连接,但源可能已断开连接。

为此,您需要检查 /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

易于解析...只需对其进行 explode() 即可。

于 2011-03-29T13:21:00.287 回答
1

使用 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 在后台定期运行更大的超时并将结果保存在某处。

于 2009-10-03T15:00:25.440 回答
0

如果是你的收音机(你知道密码和用户名),你可以使用 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!');
}
?> 

请享用

于 2012-05-15T20:23:37.723 回答