Авторизация
€
$
₴
₽
EN
RU
Vmeste.EU
Услуги
Проверка
Форумы
Основное
Radiotalk
Пользовательское
Технологии вещания, софт, скрипты
7 •
Посмотреть все темы
RELAY
1
2
243
Владислав
@VladokZzz
03.09.2010
Что-то мозг сломал, не работает relay и хоть кол чеши!
Вот кусок конфига где релай поднят
<relay>
<server>SERVER2</server>
<port>8000</port>
<mount>/alt</mount>
<local-mount>/alt</local-mount>
<on-demand>1</on-demand>
</relay>
Вот конфиг с SERVER2
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<fileserve>1</fileserve>
<mount>
<mount-name>/alt</mount-name>
<max-listeners>100</max-listeners>
<charset>cp1251</charset>
<fallback-mount>/electron</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
</mount>
Если зайти с SERVER1 на SERVER2:8000/alt.m3u - музыка качает
Если зайти с SERVER1 на SERVER1:8128/alt.m3u тобишь на relay то ничего.
Уже не понимаю где копать...
Добавлено спустя 5 минут 31 секунду:
Все разобрался!... sources стояло 1
0
243
Владислав
@VladokZzz
03.09.2010
Вопрос только в одном... Когда я с SERVER1 захожу на SERVER1:8128/alt.m3u
Статистика (что играет, сколько слушает) тут же подставляется с маунта alt, а обратно на live не возвращается. Как это исправить без перезапуска icecast?
0
833
metra52
@metra52
03.09.2010
Ну скрипт то у вас как сделан?
0
6245
Тарас
@tarasian666
03.09.2010
VladokZzz
у вас так всегда хорошо получается непонятно задать вопрос ... ;)
статистика у каждого маунта своя и она не перебрасывается
0
243
Владислав
@VladokZzz
03.09.2010
tarasian666
пишет:
VladokZzz
у вас так всегда хорошо получается непонятно задать вопрос ... ;)
статистика у каждого маунта своя и она не перебрасывается
Бывает :)
В общем на 1 сервере есть два маунта live и alt
live - localhost поток
alt - поток с 2 сервера
fallback настроен как показано выше, что если ломается поток live, то слушатели переключаются на alt. Все отлично! Когда поток live поднимается обратно, то пользователи возвращаются, НО статистика, которую я собираю (кол-во слушателей, имя маунта, что играет и т.д.) продолжает собираться с ALT.
Теперь ясна проблема? Что бы статистика собиралась снова с live и высвечивалась корректно на странице приходится рестартить icecast на 1 сервере.
0
6245
Тарас
@tarasian666
03.09.2010
как показано выше - что если ломается поток alt перебрасывает на electron, потока live вобще не вижу
статистику скриптом "грабите" ? если так то надо ставить проверку на активность маунта, допустим если на status2.xsl?mount=/live нет текущей песни или слушателей и тп то грабить с маунта alt
0
243
Владислав
@VladokZzz
03.09.2010
tarasian666
пишет:
как показано выше - что если ломается поток alt перебрасывает на electron, потока live вобще не вижу
статистику скриптом "грабите" ? если так то надо ставить проверку на активность маунта, допустим если на status2.xsl?mount=/live нет текущей песни или слушателей и тп то грабить с маунта alt
Вот конечный конфиг
-----------------1 сервер-------------------
<hostname>localhost</hostname>
<listen-socket>
<port>8128</port>
</listen-socket>
<fileserve>1</fileserve>
<mount>
<mount-name>/live</mount-name>
<max-listeners>100</max-listeners>
<fallback-mount>/alt</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<charset>cp1251</charset>
</mount>
<relay>
<server>SERVER2</server>
<port>8128</port>
<mount>/live</mount>
<local-mount>/alt</local-mount>
<on-demand>1</on-demand>
</relay>
---------------------------2 сервер------------------------------------
<hostname>localhost</hostname>
<listen-socket>
<port>8128</port>
</listen-socket>
<fileserve>1</fileserve>
<mount>
<mount-name>/live</mount-name>
<max-listeners>100</max-listeners>
<fallback-mount>/electron</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<charset>cp1251</charset>
</mount>
0
6245
Тарас
@tarasian666
03.09.2010
то есть на странице статистики icecast-a (status.xsl) на маунте live отображается титлы и кол-во слушателей маунта alt ?
0
243
Владислав
@VladokZzz
03.09.2010
Нет, в status.xsl все маунты и кол-во слушателей в порядке... кол-во перебегает с маунтов на маунт, а статистика глючит. А именно вот с этого кода
<?php
$ip = "SERVER1";
$port = "8128";
$ice2_station = "Radio";
$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30);
if(!$fp) {
$success=2;
echo'<table>
<tr>
<td width="100%" colspan="2">
<b>Радио '.$ice2_station.' в данный момент не работает</font></b></td>
</tr>
</table>';
}
if($success!=2){
fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp);
$page = ereg_replace(".*<pre>", "", $page);
$page = ereg_replace("</pre>.*", ",", $page);
$numbers = explode(",",$page);
$mount = $numbers[0];
$connections = $numbers[1];
$stream_n = $numbers[2];
$listeners = $numbers[3];
$desc = $numbers[4];
$cur_song = $numbers[5];
$str_url = $numbers[6];
$client_info = $numbers[7];
$test1 = $numbers[8];
$test2 = $numbers[9];
$test3 = $numbers[10];
$mount = $numbers[11];
$connections = $numbers[12];
$station =$numbers[13];
$listeners = $numbers[14];
$description = $numbers[15];
$cur_song = $numbers[16];
$www_url = $numbers[17];
$m=substr($numbers[11],2);
$listeners ( $m )";
echo'<br>'.$listen.'<br>'.$cur_song.'';
?>
Еще заметил такую штуку... светится маунт live все отлично, live.m3u открывается и играет поток. Если ткнуть проигрывание alt.m3u на этом же сервере, то в статистике сразу подменяются данные и светится alt и обратно, соответственно не переходит пока не перезагрузишь icecast.
Отредактировано VladokZzz -
03.09.2010
0
6245
Тарас
@tarasian666
04.09.2010
ну так проблема не в icecast-е а в скрипте, с этого и надо было начинать. Он грабит инфу только с первого маунта в списке.
решение проблемы в посте #6
0
243
Владислав
@VladokZzz
06.09.2010
tarasian666
пишет:
ну так проблема не в icecast-е а в скрипте, с этого и надо было начинать. Он грабит инфу только с первого маунта в списке.
решение проблемы в посте #6
Ага обычным IF на PHP я так понимаю? Но пока не могу разобраться как это корректно сделать.
Должно быть что-то вроде
if (live == TRUE) {$mount=/live}
и тогда он будет брать статистику с основного потока, но как в условии правильно задать проверку на существование потока?
Отредактировано VladokZzz -
06.09.2010
0
6245
Тарас
@tarasian666
06.09.2010
например если нет тегов значит поток не активен
0
243
Владислав
@VladokZzz
06.09.2010
tarasian666
пишет:
например если нет тегов значит поток не активен
А на практике в виде кода, если не сложно?
0
6245
Тарас
@tarasian666
06.09.2010
#парсится первый маунт
if ($current_track == '') {#парсим другой маунт}
echo $current_track;
0
243
Владислав
@VladokZzz
08.09.2010
Мозг порвал не не понял как? :)
Вот скрипт на сервере
<?php
$ip = "IP";
$port = "8128";
$ice2_station = "Radio";
$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30);
if(!$fp) {
$success=2;
echo'<table>
<tr>
<td width="100%" colspan="2">
<b>Радио '.$ice2_station.' в данный момент не работает</font></b></td>
</tr>
</table>';
}
if($success!=2){
fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp);
$page = ereg_replace(".*<pre>", "", $page);
$page = ereg_replace("</pre>.*", ",", $page);
$numbers = explode(",",$page);
$mount = $numbers[0];
$connections = $numbers[1];
$stream_n = $numbers[2];
$listeners = $numbers[3];
$desc = $numbers[4];
$cur_song = $numbers[5];
$str_url = $numbers[6];
$client_info = $numbers[7];
$test1 = $numbers[8];
$test2 = $numbers[9];
$test3 = $numbers[10];
$mount = $numbers[11];
$connections = $numbers[12];
$station =$numbers[13];
$listeners = $numbers[14];
$description = $numbers[15];
$cur_song = $numbers[16];
$www_url = $numbers[17];
echo $listeners;
echo $cur_song;
}
Как в нем реализовать проверку, что если live поток существует, то брать с него инфу. Если он пропадает, то брать инфу с потока alt и наоборот, когда live снова поднимается то бралось не с alt а с live?
И ALT и LIVE потоки на одном сервере.
0
6245
Тарас
@tarasian666
08.09.2010
Показать текст
$ip = "IP";
$port = "8128";
$ice2_station = "Radio";
$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30);
if(!$fp) {
$success=2;
echo'<table>
<tr>
<td width="100%" colspan="2">
<b>Радио '.$ice2_station.' в данный момент не работает</font></b></td>
</tr>
</table>';
}
if($success!=2){
fputs($fp,"GET /status2.xsl?mount=/mount1 HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
$page = ereg_replace(".*<pre>", "", $page);
$page = ereg_replace("</pre>.*", ",", $page);
$numbers = explode(",",$page);
$listeners = $numbers[3];
$cur_song = $numbers[5];
$listeners = $numbers[14];
$cur_song = $numbers[16];
}
if ($cur_song == '') {
if($success!=2){
fputs($fp,"GET /status2.xsl?mount=/mount2 HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
$page = ereg_replace(".*<pre>", "", $page);
$page = ereg_replace("</pre>.*", ",", $page);
$numbers = explode(",",$page);
$listeners = $numbers[3];
$cur_song = $numbers[5];
$listeners = $numbers[14];
$cur_song = $numbers[16];}
fclose($fp);
echo $cur_song;
как то так, учи мат часть
0
243
Владислав
@VladokZzz
08.09.2010
tarasian666
пишет:
[spoiler]
как то так, учи мат часть
Все ясно, большое спасибо... Далее возникает такой вопрос. ALT у меня в конфиге icecast идет как relay со второго сервера и поэтому статистика не подхватывается. Как это можно исправить?
0
6245
Тарас
@tarasian666
08.09.2010
хотите чтоб на alt подхватывалась статистика второго сервера?
0
243
Владислав
@VladokZzz
08.09.2010
tarasian666
пишет:
хотите чтоб на alt подхватывалась статистика второго сервера?
Именно!
0
6245
Тарас
@tarasian666
08.09.2010
нет, так не получится, разве скрипт будет брать из 2х серверов статистику и плюсовать
0
цвет
черный
красный
синий
зелёный
оранжевый
фиолетовый
серый
-
1
2
3
4
5
6
7