2013-03-11 5 views
3

На веб-сайте есть 5 потоков. Мне нужно определить, существуют ли эти потоки. Если нет, вместо этого есть несколько аудиофайлов.Как определить, существует ли поток icecast/shoutcast?

Я использую HTML5, чтобы играть поток и поток URLs выглядеть следующим образом:

http://locus.creacast.com:9001/StBaume_grotte.ogg

Я пробовал разные вещи, но это не похоже на работу. Потоки никогда не обнаруживаются.

Решение 1: Здесь я просто попытался проверить, существует ли файл.

if (file_exists($stream_1)) { 
      $debug_output_stream_1 = "Le fichier $stream_1 existe."; 
      $erreur_404_Stream_1 = true; 
     } else { 
      $debug_output_stream_1 = "Le fichier $stream_1 n'existe pas."; 
      $erreur_404_Stream_1 = false; 
     } 

Solutions 2: Я стараюсь, чтобы обнаружить ошибки 404

$file_headers_1 = @get_headers($stream_1); 
     if($file_headers_1[0] == 'HTTP/1.1 404 Not Found') { 
      $debug_output_stream_1 = "StBaume_sommet.ogg : L'URL n'existe pas."; 
      $erreur_404_Stream_1 = true; 
     } 
     else { 
      $debug_output_stream_1 = "StBaume_sommet.ogg : L'URL existe."; 
      $erreur_404_Stream_1 = false; 
     } 

Вы знаете, как проверить, существуют ли потоки?

ответ

4

Вы проверяете всю строку состояния, включая HTTP-версию HTTP/1.1. Большинство серверов возвращают HTTP/1.0. Вам нужно проверить только код состояния.

if (strpos($file_headers_1[0], '200 OK') === false) { 
    // error occurred 
} 
+0

Спасибо, ты прав. Знаете ли вы, почему требуется очень много времени, чтобы проверить, существуют ли мои потоки, но если я проверю URL-адрес, например «http://stackoverflow.com», проверка выполняется очень быстро. Это проблема с сервером? –

+0

@ SébastienGicquel У него может быть много причин. Конфигурация сети, сервера (mis) и многие другие. Постарайтесь сделать это шаг за шагом и проверить каждую возможную причину, пока не найдете проблему. –

+1

Лучше всего проверить только номер кода состояния и проигнорировать сообщение с ним. – Brad

Смежные вопросы