문제

기본적으로, 외침 라디오가 온라인인지 아닌지 확인하고이를 기반으로 코드를 출력 할 수있는 간단한 스크립트 만 있습니다.

나는 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과의 배경에서 정기적으로 더 큰 시간 초과로 이것을 실행하고 어딘가에 결과를 저장하는 것이 가장 좋습니다.

다른 팁

Sorki의 대답은 서버가 실행 중인지 확인하고 싶지만 Gumbo가 지적한 것처럼 "온라인"수준이 다릅니다.

예를 들어 스트림 연결을 허용하지 않도록 서버가 비활성화 될 수 있습니다. 서버는 스트림 연결을 수락 할 수 있지만 소스가 연결이 끊어 질 수 있습니다.

이를 위해서는 /7.html의 상태를 확인해야합니다. 어딘가에 사용자 에이전트 문자열에서 "모질라"로 이것을 누르십시오. 당신은 다음과 같은 무언가를 얻을 것입니다 :

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

쉽게 구문 분석 ... 그냥 폭발 ()을 수행하십시오.

라디오 (비밀번호와 사용자 이름을 알고 있음) 인 경우 컬을 사용할 수 있습니다. 해당 코드에서 $ 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