Shoutcast radyo çevrimiçi olup olmadığını görmek için basit bir onay (PHP)?

3 Cevap php

Temelde, sadece basit bir shoutcast radyo çevrimiçi olup olmadığını görmek için kontrol edebilirsiniz komut ve çıkış bir kod ona göre.

Ben file_get_contents ve eregi ile yapmaya çalıştım, ancak işe görünmüyordu, ya da yavaş çooook oldu.

Şerefe.

:)

3 Cevap

Fsockopen kullanın ve hata için kontrol edin.

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

Denemek ve timeout belirlemek zorunda ama cron ve yerde sonuçlarını tasarrufu ile arka plan üzerinde düzenli büyük zaman aşımı ile bu çalıştırmak için iyi olabilir.

Sadece sunucusunun çalıştığından emin belirlemek istiyorsanız Sorki cevabı gayet iyi, ama bamya belirttiği gibi, "çevrimiçi" farklı düzeyleri vardır.

Bu akışı bağlantıları kabul etmez böylece Örneğin, sunucu devre dışı bırakılabilir. Sunucu akışı bağlantıları kabul olabilir, ancak kaynak kesilebilir.

Bunun için, / 7.html de durumunu kontrol etmek gerekir. Yere kullanıcı aracısı dizesi "Mozilla" ile bu çarptı. Böyle bir şey geri alırsınız:

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

Veri alanı şunlardır:

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

Ayrıştırmak kolay ... sadece bunun üzerine () patlayabilir yok.

Bu radyo (Eğer şifrenizi ve kullanıcı adınızı biliyorum) Eğer, bir CURL kullanabilirsiniz. Kod parçası bir $ xml-> STREAMSTATUS değeri olsun deneyin:

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

hoşlanmak