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.
<?php
/*
* Autor: Rafał Robakowski
* Kontakt: rafal.robakowski@gmail.com
*/
class SHOUTcast {
/*
* Łączenie z serwerem shoutcast
* i pobieranie zawartosci pliku xml
*/
function connect($host, $port, $pass) {
$fp = @fsockopen ($host, $port, $errno, $errstr, 5
);
if (!$fp) {
return false;
} else {
fputs($fp, "GET /admin.cgi?pass={$pass}&mode=viewxml HTTP/1.1rn"); fputs($fp, "User-Agent: XML Getter (Mozilla Compatible)rnrn");
$xml .= fgets($fp, 1024
); }
return $xml;
}
}
/*
* Zwracanie danej pozycji, oto ich lista:
* CURRENTLISTENERS - ilość aktualnych słuchaczy
* PEAKLISTENERS - dotychczasowy rekord liczby słuchaczy
* MAXLISTENERS - maksymalna ilość słuchaczy
* SERVERGENRE - rodzaj serwera
* SERVERURL - adres URL strony
* SERVERTITLE - nazwa serwera
* SONGTITLE - nazwa utworu aktualnie odtwarzanego
* IRC - identyfikator IRC
* AIM - identyfikator AIM
* ICQ - identyfikator ICQ
* STREAMSTATUS - status strumienia
* BITRATE - jakość nadawania
*/
function show($item) {
$show = $xml;
return $show;
}
/*
* Zwracanie rekordu radia
*/
function show_record($filename) {
$file = $filename;
include_once($file);
$current = $this -> show('CURRENTLISTENERS');
if ( $current <= $peak_file ) {
return $peak_file;
} else {
$new = '<?php $peak_file = '.$current.'; ?>';
return $current;
} else {
return 'Wystąpił bład, sprawdź chmody pliku rekord.txt';
}
}
}
function free_result() {
$xml = '';
}
}
/*
* Przykład wykorzystania w osobnym pliku
// Includujemy plik z klasa napisana powyzej
include_once('shoutcast.php');
$statystyki = new SHOUTcast();
// Jeśli skrypt nie uzyska polaczenia z serwerem wyswietl informacje
// Podajemy kolejno: IP serwera SHOUTcast, port serwera SHOUTcast, haslo do serwer
a SHOUTcast
if( !$statystyki -> connect('127.0.0.1', 'port', 'haslo'))
echo 'Serwer jest wyłączony';
// Jesli skrypt uzyska polaczenie z serwerem
else {
// Jeśli aktualnie nikt nie nadaje wyswietl informacje
if( $statystyki -> show('STREAMSTATUS') == 0 )
echo 'Aktualnie nikt nie nadaje';
// Jeśli ktos nadaje na serverze wyswietl statystyki
else {
echo '<table border="0" cellspacing="0" cellpadding="0">';
echo '<tr><td>Audycja: </td><td>' . $statystyki -> show('SERVERTITLE') . '</td></tr>';
echo '<tr><td>Prowadzi: </td><td>' . $statystyki -> show('SERVERGENRE') . '</td></tr>';
echo '<tr><td>Godziny: </td><td>' . $statystyki -> show('AIM') . '</td></tr>';
echo '<tr><td>Słucha: </td><td>' . $statystyki -> show('CURRENTLISTENERS') . '</td></tr>';
// 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 !
echo '<tr><td>Rekord: </td><td>' . $statystyki -> show_record('rekord/rekord.php') . '</td></tr>';
echo '</table>';
}
}
$statystyki -> free_result();
*/
?>
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:
<?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