Считывание заголовков mp3-потока сокетами

Статус
В этой теме нельзя размещать новые ответы.

Albert22

Старатель
Регистрация
30 Мар 2008
Сообщения
270
Реакции
11
Привет
Есть необходимость определить статус потока с Icecast (online/offline). Если поток онлайн, то get_headers(); вполне хватает, однако если с ним вдруг что, то get_headers(); начинает жутко тормозить пока не наступит неведомый таймаут. Решил использовать сокеты:
PHP:
function getHeaders($addr) {
    $addr=str_replace('http://', '', $addr);
    $url['path']=explode('/', $addr);
    $url['host']=explode(':', $url['path'][0]);
    $fp = @fsockopen($url['host'][0], $url['host'][1], $errno, $errstr, 3);
    if (!$fp) {
        echo "Unable to open\n";
    } else {

        fwrite($fp, "GET /".$url['path'][1]." HTTP/1.0\r\n\r\n");
        stream_set_timeout($fp, 2);
        $res = fread($fp, 20);
        fclose($fp);
         return $res;
        }

    }     
}
В функцию передаётся нечто вроде Для просмотра ссылки Войди или Зарегистрируйся. Скажите, когда в ответе функции содержится 200 ОК (а значит всё работает и получено), я не рискую оставить считывание «включенным»? Запрос ведь используется GET, HEAD не работает (400 Bad Request сокетами и curl'ом). То есть, по завершении скрипт не продолжит загрузку данных? Или fclose(); всё решает?
 
эфклоз закроет соединение
 
  • Нравится
Реакции: irk
То есть будут считаны только первые 20 символов ответа и соединение закроется?
 
То есть будут считаны только первые 20 символов ответа и соединение закроется?

ессно - для того, что бы продолжить - нужно продолжать чтение, а ты рвешь соединение
 
Благодарю, всё ясно
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху