Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [klasa] statystyki shoutcast, php4 i 5
Rafiki
post 3.05.2006, 20:23:24
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Z krzaków

Ostrzeżenie: (0%)
-----


Jak w temacie statystyki shoutcast.

W przeciwienstwie do wielu juz innych gotowych ta klasa zapisuje rekord do pliku dzieki czemu po restarcie serwera rekord zostaje taki sam jaki byl przed restartem serwera nie zeruje sie.

  1. <?php
  2.  
  3. /*
  4. * Autor: Rafał Robakowski
  5. * Kontakt: rafal.robakowski@gmail.com
  6. */
  7. class SHOUTcast {
  8.  
  9. /*
  10. * Łączenie z serwerem shoutcast
  11. * i pobieranie zawartosci pliku xml
  12. */
  13. function connect($host, $port, $pass) {
  14. global $xml;
  15.  
  16. $fp = @fsockopen ($host, $port, $errno, $errstr, 5); 
  17.  
  18. if (!$fp) { 
  19. return false; 
  20. } else { 
  21. fputs($fp, "GET /admin.cgi?pass={$pass}&mode=viewxml HTTP/1.1rn");
  22. fputs($fp, "User-Agent: XML Getter (Mozilla Compatible)rnrn");
  23.  
  24. while (!feof($fp)) { 
  25. $xml .= fgets($fp, 1024); 
  26. }
  27. fclose($fp);
  28. return $xml;
  29. }
  30. }
  31.  
  32. /*
  33. * Zwracanie danej pozycji, oto ich lista:
  34. * CURRENTLISTENERS - ilość aktualnych słuchaczy
  35. * PEAKLISTENERS - dotychczasowy rekord liczby słuchaczy
  36. * MAXLISTENERS - maksymalna ilość słuchaczy
  37. * SERVERGENRE - rodzaj serwera
  38. * SERVERURL - adres URL strony
  39. * SERVERTITLE - nazwa serwera
  40. * SONGTITLE - nazwa utworu aktualnie odtwarzanego
  41. * IRC - identyfikator IRC
  42. * AIM - identyfikator AIM
  43. * ICQ - identyfikator ICQ
  44. * STREAMSTATUS - status strumienia
  45. * BITRATE - jakość nadawania
  46. */
  47. function show($item) {
  48. global $xml;
  49.  
  50. $show = $xml;
  51.  
  52. list(,$show) = explode('<'.strtoupper($item).'>',$show); 
  53. list($show,) = explode('</'.strtoupper($item).'>',$show); 
  54. return $show; 
  55. }
  56.  
  57. /*
  58. * Zwracanie rekordu radia
  59. */
  60.  
  61. function show_record($filename) {
  62. $file = $filename;
  63.  
  64. include_once($file);
  65. $current = $this -> show('CURRENTLISTENERS');
  66.  
  67. if ( $current <= $peak_file ) {
  68. return $peak_file;
  69. } else {
  70. if (is_writable($file)) {
  71. $fp = fopen($file, 'a');
  72. $new = '<?php $peak_file = '.$current.'; ?>';
  73. @fwrite($fp, $new);
  74. fclose($fp);
  75.  
  76. return $current;
  77. } else {
  78. return 'Wystąpił bład, sprawdź chmody pliku rekord.txt';
  79. }
  80. }
  81.  
  82. }
  83.  
  84. function free_result() {
  85. global $xml;
  86. $xml = '';
  87. }
  88.  
  89. }
  90.  
  91. /*
  92. * Przykład wykorzystania w osobnym pliku
  93.  
  94. // Includujemy plik z klasa napisana powyzej
  95.  
  96. include_once('shoutcast.php');
  97.  
  98. $statystyki = new SHOUTcast();
  99.  
  100. // Jeśli skrypt nie uzyska polaczenia z serwerem wyswietl informacje
  101. // Podajemy kolejno: IP serwera SHOUTcast, port serwera SHOUTcast, haslo do serwer
    a SHOUTcast
  102. if( !$statystyki -> connect('127.0.0.1', 'port', 'haslo'))
  103. echo 'Serwer jest wyłączony';
  104.  
  105. // Jesli skrypt uzyska polaczenie z serwerem
  106. else {
  107.  
  108. // Jeśli aktualnie nikt nie nadaje wyswietl informacje
  109. if( $statystyki -> show('STREAMSTATUS') == 0 )
  110. echo 'Aktualnie nikt nie nadaje';
  111.  
  112. // Jeśli ktos nadaje na serverze wyswietl statystyki
  113. else {
  114. echo '<table border="0" cellspacing="0" cellpadding="0">';
  115. echo '<tr><td>Audycja: </td><td>' . $statystyki -> show('SERVERTITLE') . '</td></tr>';
  116. echo '<tr><td>Prowadzi: </td><td>' . $statystyki -> show('SERVERGENRE') . '</td></tr>';
  117. echo '<tr><td>Godziny: </td><td>' . $statystyki -> show('AIM') . '</td></tr>';
  118. echo '<tr><td>Słucha: </td><td>' . $statystyki -> show('CURRENTLISTENERS') . '</td></tr>';
  119.  
  120. // Funkcja show_record(); wyswietla rekord zapisany z pliku, w nawiasach nalezy podac sciezke do pl
    iku gdzie bedzie przetrzymywany rekord ( plik musi posiadac uprawnienia do zapisu ( chmody ), dzieki temu po zrestartowaniu serwera shoutcast rekord zostanie bez zmian
    a taki jaki byl przed restartem !
  121.  
  122. echo '<tr><td>Rekord: </td><td>' . $statystyki -> show_record('rekord/rekord.php') . '</td></tr>';
  123. echo '</table>';
  124. }
  125. }
  126. $statystyki -> free_result();
  127. */
  128. ?>


Oczywiscie przy wywolaniu modulu show_record trzeba podac sciezka do pliku .php gdzie bedzie zapisywany rekord natomiast plik nalezy utworzyc i nadawac mu odpowiednie chmody ( prawa zapisu ). Plik php do ktorego wskazemu sciezke musi miec nastepujaca zawartosc:
  1. <?php $peak_file = 0; ?>


Cała operacja jest oczywiscie zbedna gdy niechcemy wyswietlac rekordu radia na stronie.

Ten post edytował Rafiki 9.07.2006, 18:15:14
Go to the top of the page
+Quote Post
raf2001
post 4.05.2006, 12:54:57
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

Ostrzeżenie: (0%)
-----


niewiem czy się przyda ale oto art mojego kumpla :
http://www.webinside.pl/php/tutoriale/134
też można przerobić na klasę tongue.gif


--------------------
Go to the top of the page
+Quote Post
chrupek123
post 11.05.2007, 15:07:17
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.05.2007

Ostrzeżenie: (0%)
-----


wiem ze ten temat stal sie juz obumarly:D
ale chcialem sie zapytac gdzie i jak mam powrzucac te kody

bo probowalem po swojemu ale mi nie wychodzi

prosze o pomoc

Ten post edytował chrupek123 11.05.2007, 15:36:00
Go to the top of the page
+Quote Post
_Kam_
post 8.02.2010, 20:40:26
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.12.2009

Ostrzeżenie: (0%)
-----


Witam. Pomoże Mi Ktoś zrobić statystyki Shoutcast questionmark.gif Moje gg: 2914059.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.04.2025 - 06:23