Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Statystyka shoutcast i błąd fsockopen
Forum PHP.pl > Forum > Przedszkole
Msichal
Witam,zrobiłem sobię serwer shoutcast, właściwie to będą 3 i chcę żeby na jednej stronie były 3 skrypty, które pokazują info, niestety, nie mogę doprowadzić tego do działania, pojedyńczy skrypt wygląda tak:
  1. <font face="arial" color="ffffff" size="2">
  2. <?
  3.   $sc[czas]       =   180;
  4.   $sc[host]       =   "***********";
  5.   $sc[port]       =   8000;
  6.  $sc[template]   =   " ONLIN:<b> [status]</b><br>Nazwa Radia&nbsp:<b>[dj]</b><br>Prezenter:<b> [genre] </b><br>Gadu-gadu Dj-:<b>[gg]</b><br>Slucha&nbsp:<b> [ile] osób</b><br>";
  7. #   $sc[template]   =   "<b>Status (on/off/err)&nbsp:</b> [status]<br><b>GG DJ-:</b> [gg]<br><b>D:</b> [genre]<br><b>Ilu sluchaczy aktualnie/maksymalnie/pea:</b> [ile]/[max]/[peak]<br>";
  8.  
  9.  
  10.  
  11.  
  12. ?>
  13. <html>
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  16. <META HTTP-EQUIV="Refresh" CONTENT="<?=$sc[czas]?>; URL="">
  17. </head>
  18. <body bgcolor="000000">
  19. <?
  20. if($fp = fsockopen($sc[host], $sc[port]))
  21. {
  22. fputs($fp,"GET /index.html HTTP/1.0r\nUser-Agen: XML Getter (Mozilla Compatible)r\nr\n");
  23. fgets($fp);fgets($fp);fgets($fp);
  24.       while(!feof($fp)) $in.=strip_tags(fgets($fp));
  25. fclose($fp);
  26.  # echo $in;
  27.  
  28. //  [status]
  29.   $m[0]="Server is currently";
  30.   $m[1]="";
  31.   $mp[0]=strpos($in,$m[0]);
  32.   $mp[1]=@strpos($in,$m[1]);
  33.   $ml[0]=strlen($m[0]);
  34.   $ml[1]=strlen($m[1]);
  35.  
  36.   $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , 5 ) ) );
  37.  
  38.   if( $tmp[1][0] == "up" )
  39.       $dat[status] = "on";
  40.   elseif( $tmp[1][0] == "down" )
  41.       $dat[status] = "off";
  42.   else
  43.       $dat[status] = "err";
  44.  
  45.   if($dat[status]=="on")
  46.   {
  47.   //  [dj]
  48.       $m[0]="Stream Titl:";
  49.       $m[1]="Content Typ:";
  50.       $mp[0]=strpos($in,$m[0]);
  51.       $mp[1]=strpos($in,$m[1]);
  52.       $ml[0]=strlen($m[0]);
  53.       $ml[1]=strlen($m[1]);
  54.  
  55.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );
  56.  
  57.       if( $tmp[1] ) $dat[dj] = $tmp[1];
  58.       else $dat[dj] = "err";
  59.  
  60.   //  [gg]
  61.       $m[0]="Stream AI:";
  62.       $m[1]="Stream IR:";
  63.       $mp[0]=strpos($in,$m[0]);
  64.       $mp[1]=strpos($in,$m[1]);
  65.       $ml[0]=strlen($m[0]);
  66.       $ml[1]=strlen($m[1]);
  67.  
  68.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );
  69.  
  70.       if( $tmp[1] ) $dat[gg] = $tmp[1];
  71.       else $dat[gg] = "err";
  72.  
  73.   //  [genre]
  74.       $m[0]="Stream Genr:";
  75.       $m[1]="Stream UR:";
  76.       $mp[0]=strpos($in,$m[0]);
  77.       $mp[1]=strpos($in,$m[1]);
  78.       $ml[0]=strlen($m[0]);
  79.       $ml[1]=strlen($m[1]);
  80.  
  81.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) );
  82.  
  83.       if( $tmp[1] ) $dat[genre] = $tmp[1];
  84.       else $dat[genre] = "err";
  85.  
  86.   //  [ile]
  87.       $m[0]="kbps with";
  88.       $m[1]="listeners";
  89.       $mp[0]=strpos($in,$m[0]);
  90.       $mp[1]=strpos($in,$m[1]);
  91.       $ml[0]=strlen($m[0]);
  92.       $ml[1]=strlen($m[1]);
  93.  
  94.       $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) ) );
  95.  
  96.       if( $tmp[1] ) $dat[ile] = $tmp[1][0];
  97.       else $dat[ile] = "err";
  98.  
  99.   //  [max]
  100.       $m[0]="kbps with";
  101.       $m[1]="listeners";
  102.       $mp[0]=strpos($in,$m[0]);
  103.       $mp[1]=strpos($in,$m[1]);
  104.       $ml[0]=strlen($m[0]);
  105.       $ml[1]=strlen($m[1]);
  106.  
  107.       $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) ) );
  108.  
  109.       if( $tmp[1] ) $dat[max] = $tmp[1][2];
  110.       else $dat[max] = "err";
  111.  
  112.   //  [peak]
  113.       $m[0]="Listener Pea:";
  114.       $m[1]="Average";
  115.       $mp[0]=strpos($in,$m[0]);
  116.       $mp[1]=strpos($in,$m[1]);
  117.       $ml[0]=strlen($m[0]);
  118.       $ml[1]=strlen($m[1]);
  119.  
  120.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-7) );
  121.  
  122.       if( $tmp[1] ) $dat[peak] = $tmp[1];
  123.       else $dat[peak] = "err";
  124.  
  125.  
  126.   }
  127. }
  128. else
  129. {
  130.   $dat=array();
  131.   $dat[status]="err";
  132. }
  133.  
  134. $co             =   array('[status]','[dj]','[gg]','[genre]','[ile]','[max]','[peak]');
  135. $naco           =   array($dat[status],$dat[dj],$dat[gg],$dat[genre],$dat[ile],$dat[max],$dat[peak]);
  136. $sc[template]   =   str_replace($co,$naco,$sc[template]);
  137.  
  138. echo $sc[template];
  139. ?>
  140. </font>
  141. </body>
  142. </html><BR>
  143. <a href=***************:8000/listen.pls>
  144. <b>Kliknij by posłuchać</b></a><br><br>


Jest to leciutko przerobiony kod z jakiejś strony (zmienione tylko nazwy typu online itp.)
Jeżeli umieszczę 3 takie skrypty na jednej stronie wyskakuję błąd łączenia się przez fsockopen, próbowałem nawet zmienić nazwy zmiennych dla poszczególnych serwerów, teraz zrobilem kazdy serwer w oddzielnym IFRAME i dalej nie działa ;/
Może po prostu nie możę się połączyć bo serwer nie jest włączony questionmark.gif Mam włączony tylko pierwszy i ten działa, a w innych mam już błędy ;/...

Proszę o pomoc.
Msichal
Ojjj, bardzo przepraszam, nie dopisałem nic do tematu... Bardzo proszę moda o dopisanie do tematu "Statystyka shoutcast i błąd fsockopen"
Msichal
Ajjjj, pomyłka, jednak nie jest to problem ze strony kodu, po prostu przy wyłączonym serwerze pokazuje błąd.....


Teraz mam pytanie, czy ktoś mógłby dać mi przykład "usprawnienia" tego kodu tak, by przy braku połączenia z serwerem drukował duży napis OFFLINE zamiast błędu questionmark.gif Bardzo proszę o pomoc!
estidi
mozna dopisac wlasna obsluge bledow
lub tez wylaczyc bledy w ogole i sprawdzac czy sie polaczylo czy nie w jakims warunku
oLOL
Problem tylko w tym że nie znam się na HP, a jedynie dostosowalem ten skrypt do wlasnych potrzeb.
Z tą obsługą błędów to trzeba mi żeby zamiast
  1. <?php
  2. Warningfsockopen(: unable to connect to radio-miaczyn-3.no-ip.org8000 in /home/inne/msichal/public_html/radyjo/s3.php on line 22
  3. ?>
pokazywało się OFFLINE... Najlepiej prosiłbym o "gotowca" albo jakieś polecenia jak to zrobić...
DREEMus
linia 133 ...

zamień
Kod
$dat[status]="err";


na
Kod
$dat[status]="echo 'OFFLINE'";


powinno działać ;D chyba biggrin.gif
Msichal
No dobra przerzuciłem się an inny skrypt, który obecnie wygląda tak:
  1. <!--
  2.  
  3. SKRYPT STATYSTYK SERWERA SHOUTCAST
  4. DLA RADIA INTERNETOWEGO
  5. grafika, html & uzupelnienia w skrypcie php (c) Majkell 2005
  6. Portal EMSoft - Polskie Centrum SHOUTcast
  7. <a href=\"htt://www.radiostacja.prv.pl\" target=\"_blank\">htt://www.radiostacja.prv.pl</a>
  8.  
  9. -->
  10.  
  11. <?
  12.   $sc[czas]       =   180;
  13.   $sc[host]       =   "po-co-to-wam-potrzebne ?biggrin.gif";
  14.   $sc[port]       =   8000;
  15.  
  16. $sc[template1]   =  "<b>[radio]</b>";
  17. $sc[template2]   =  "<b>[aim]</b>";
  18.  
  19. if($fp = fsockopen($sc[host], $sc[port]))
  20. {
  21. fputs($fp,"GET /index.html HTTP/1.0r\nUser-Agen: XML Getter (Mozilla Compatible)r\nr\n");
  22. fgets($fp);fgets($fp);fgets($fp);
  23.       while(!feof($fp)) $in.=strip_tags(fgets($fp));
  24. fclose($fp);
  25.  
  26. a
  27. //  [status]
  28.   $m[0]="Server is currently";
  29.   $m[1]="";
  30.   $mp[0]=strpos($in,$m[0]);
  31.   $mp[1]=@strpos($in,$m[1]);
  32.   $ml[0]=strlen($m[0]);
  33.   $ml[1]=strlen($m[1]);
  34.  
  35.   $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , 5 ) ) );
  36.  
  37.   if( $tmp[1][0] == "up" )
  38.       $dat[status] = "On";
  39.   elseif( $tmp[1][0] == "down" )
  40.       $dat[status] = "Off";
  41.   else
  42.       $dat[status] = "err";
  43.  
  44.   if($dat[status]=="On")
  45.   {
  46.   //  [radio]
  47.       $m[0]="Stream Titl:";
  48.       $m[1]="Content Typ:";
  49.       $mp[0]=strpos($in,$m[0]);
  50.       $mp[1]=strpos($in,$m[1]);
  51.       $ml[0]=strlen($m[0]);
  52.       $ml[1]=strlen($m[1]);
  53.  
  54.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );
  55.  
  56.       if( $tmp[1] ) $dat[radio] = $tmp[1];
  57.       else $dat[radio] = "err";
  58.  
  59.   //  [aim]
  60.       $m[0]="Stream AI:";
  61.       $m[1]="Stream IR:";
  62.       $mp[0]=strpos($in,$m[0]);
  63.       $mp[1]=strpos($in,$m[1]);
  64.       $ml[0]=strlen($m[0]);
  65.       $ml[1]=strlen($m[1]);
  66.  
  67.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1] ) );
  68.  
  69.       if( $tmp[1] ) $dat[aim] = $tmp[1];
  70.       else $dat[aim] = "err";
  71.  
  72.   //  [genre]
  73.       $m[0]="Stream Genr:";
  74.       $m[1]="Stream UR:";
  75.       $mp[0]=strpos($in,$m[0]);
  76.       $mp[1]=strpos($in,$m[1]);
  77.       $ml[0]=strlen($m[0]);
  78.       $ml[1]=strlen($m[1]);
  79.  
  80.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) );
  81.  
  82.       if( $tmp[1] ) $dat[genre] = $tmp[1];
  83.       else $dat[genre] = "err";
  84.  
  85.   //  [ile]
  86.       $m[0]="kbps with";
  87.       $m[1]="listeners";
  88.       $mp[0]=strpos($in,$m[0]);
  89.       $mp[1]=strpos($in,$m[1]);
  90.       $ml[0]=strlen($m[0]);
  91.       $ml[1]=strlen($m[1]);
  92.  
  93.       $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) ) );
  94.  
  95.       if( $tmp[1] ) $dat[ile] = $tmp[1][0];
  96.       else $dat[ile] = "err";
  97.  
  98.   //  [max]
  99.       $m[0]="kbps with";
  100.       $m[1]="listeners";
  101.       $mp[0]=strpos($in,$m[0]);
  102.       $mp[1]=strpos($in,$m[1]);
  103.       $ml[0]=strlen($m[0]);
  104.       $ml[1]=strlen($m[1]);
  105.  
  106.       $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) ) );
  107.  
  108.       if( $tmp[1] ) $dat[max] = $tmp[1][2];
  109.       else $dat[max] = "err";
  110.  
  111.   //  [peak]
  112.       $m[0]="Listener Pea:";
  113.       $m[1]="Average";
  114.       $mp[0]=strpos($in,$m[0]);
  115.       $mp[1]=strpos($in,$m[1]);
  116.       $ml[0]=strlen($m[0]);
  117.       $ml[1]=strlen($m[1]);
  118.  
  119.       $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-7) );
  120.  
  121.       if( $tmp[1] ) $dat[peak] = $tmp[1];
  122.       else $dat[peak] = "err";
  123.  
  124.  
  125.   }
  126. }
  127. else
  128. {
  129.   $dat=array();
  130.   $dat[status]="err";
  131. }
  132.  
  133. $co             =   array('[status]','[radio]','[aim]','[genre]','[ile]','[max]','[peak]');
  134. $naco           =   array($dat[status],$dat[radio],$dat[aim],$dat[genre],$dat[ile],$dat[max],$dat[peak]);
  135. $sc[template1]   =   str_replace($co,$naco,$sc[template1]);
  136. $sc[template2]   =   str_replace($co,$naco,$sc[template2]);
  137.  
  138.  $fp1 = @fsockopen($sc[host], $sc[port], &$errno, $errstr, 10, $float ,3); // próbowałem ustawić timeout - bez rezultatu...
  139.  
  140.  if (!$fp1) {
  141.   $text = "Aktualnie nie nadajemy";
  142.  } else {
  143.   stream_set_timeout($fp1, 2);
  144.   fputs($fp1, "GET /7 HTTP/1.1\nUser-Agen:Mozilla\n\n");
  145.  
  146.   for($i = 0; $i < 1; $i++) {
  147.    if (feof($fp1)) break;
  148.    $fp_data1 = fread($fp1, 31337);
  149.    usleep(500000);
  150.   }
  151.  
  152.   $fp_data1 = ereg_replace("^.*<body>", "", $fp_data1);
  153.   $fp_data1 = ereg_replace("</body>.*", "", $fp_data1);
  154.  
  155.   list($current1, $status1, $peak1, $max1, $reported1, $bit1, $song1) = explode(",", $fp_data1, 7);
  156.  
  157.   if ($status1 == "1")
  158.    $text = "$song1";
  159. else
  160.    $text = "Aktualnie nie nadajemy";
  161.  }
  162.  
  163. // TU WSTAW ADRESY DO ZDJEC DJ'OW - WEDLUG WZORU
  164.  
  165. if ($dat[aim] == "AutoPilot") $fotka = "pilot.jpg"; else
  166. if ($dat[aim] == "*") $fotka = "brak.gif"; else
  167. if ($dat[aim] == "*") $fotka = "brak.gif"; else
  168. if ($dat[aim] == "*") $fotka = "brak.gif"; else
  169.  
  170. $fotka = "brak.gif";
  171.  
  172. ?>
  173.  
  174. <table cellspacing="0" cellpadding="0" height="216" width="140" border="0" background ="tlo.gif">
  175. <tr><td width ="100%" height ="19" colspan ="2">
  176. <center><font size ="2" face ="Verdana" color ="black"><b>
  177. <a name="pokaz">
  178. Radio *
  179. </b><br></font></center>
  180. </td></tr>
  181. <tr><td width ="80%" height ="15" valign ="top" colspan ="2">
  182. <center><font size ="1" face ="Arial"><b>
  183. <A href ="htt://******" target ="_blank"><font color ="brown">Nasze RadiO</font></A>
  184. </b><br></font></center>
  185. </td></tr>
  186. <tr><td width ="100%" height ="15" colspan ="2">
  187. </td></tr>
  188. <tr><td width ="100%" height ="17" valign ="top" colspan ="2">
  189. <center><font size ="2" face ="Courier" color ="black"><b>
  190. <MARQUEE width="80%" SCROLLAMOUNT="4" behavior ="scroll" onMouseOver='this.stop()' onMouseOut='this.start()'>
  191. <? echo $sc[template1]; ?>
  192. </MARQUEE>
  193. </font></center>
  194. </td></tr>
  195. <tr><td width ="100%" height ="15" colspan ="2">
  196. </td></tr>
  197. <tr><td width ="100%" height ="17" valign ="top" colspan ="2">
  198. <center><font size ="2" face ="Courier" color ="black"><b>
  199. <MARQUEE width="80%" SCROLLAMOUNT="4" behavior ="scroll" onMouseOver='this.stop()' onMouseOut='this.start()'>
  200. <? echo $text; ?>
  201. </MARQUEE>
  202. </font></center>
  203. </td></tr>
  204. <tr><td width ="100%" height ="15" colspan ="2">
  205. </td></tr>
  206. <tr><td width ="100%" height ="17" valign ="top" colspan ="2">
  207. <center><font size ="2" face ="Courier" color ="black"><b>
  208. <MARQUEE width="80%" SCROLLAMOUNT="4" behavior ="alternate" onMouseOver='this.stop()' onMouseOut='this.start()'>
  209. <? echo $sc[template2]; ?>
  210. </MARQUEE>
  211. </font></center>
  212. </td></tr>
  213. <tr><td width ="100%" height ="6" colspan ="2">
  214. </td></tr>
  215. <tr><td width ="65" height ="80" valign ="top">
  216. <a href ="******:8000/listen.pls"><img src ="separ.gif" width ="65" height ="70" border ="0"></a><br clear ="all">
  217. <td width ="75" height ="80" valign ="top">
  218. <? print "<img src ='$fotka' width ='62' height ='70'>"; ?>
  219. <br clear ="all">
  220. </td></tr>
  221. </table>


I teraz mam trochę podobny problem, skrypt pokazuje, jeśli nie może się połączyć, ale przed statusem wywala błąd i na dodatek skrypt ładuje się kilka minut...
O ile z przesunięciem sobie poradziłem, bo status mam w IFRAME, wystarczyło zrobić kotwice i wyłączyc scrollowanie, to ze stroną ładującą sie 2-3 minuty sobie nie poradziłem, próbowałem ustawiać różne timeouty dla fsockopen ale nic nie działa...

Proszę o pomoc!
blaster44
Dołączam się do prośby.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.