Funkcja fsockopen nie jest w żaden sposób związana z ShoutCast, to że nie działa to jest problem po stronie Twojego hostingu, najprawdopodobniej z powodu blokady tejże funkcji - bardzo popularne działanie na platformach hostingowych. Panel 4stream.pl korzysta z niej i nie mamy żadnych problemów.
Co do statystyk - ShoutCast v2 działa w oparciu o wiele kanałów, wystarczy w statystykach do URLa serwera dokleić parametr sid=1, to rozwiąże problem niedziałania. Tyczy się to wszystkich skryptów, również tych do zdejmowania prezenterów.
Dziekuje za szybka odpowiedz, chociaz wydaje mi sie, ze troche wymijajaca. Korzystam z Waszego hostingu juz kilka lat i mimo, ze nie wszystko bylo po mojej mysli, nie mam zamiaru rezygnowac. Jezeli do momentu zmiany SC V1 na SC V2 wszystko co mialem umieszczone na swoim serwerze, dzialalo bez zarzutu, to jak mozna twierdzic, ze obsluga funkcji fsockopen jest zablokowana. I sprawa "kick shout" - skrypt dzialal bez problemu do momentu przejscia na SC V2. I na koncu pytanie dotyczace parametru sid=1, czy moglbys podac to na przykladzie? Pozdrawiam!A tu skrypt do statystyk ShoutCast V2:
stats.php<?php
require_once "inc.php";
$array = array(); // Let's store our shoutcast variables into an array.
$array['host'] = "HOST"; // Your Shoutcast Host
$array['port'] = "PORT"; // Your Shoutcast Port
$array['extra'] = "/admin.cgi?sid=1&mode=viewxml&page=1"; // The bit that follows in the url to access the xml of the stats
$array['user'] = "ADMINUSER"; // Admin username (Default is usually "admin")
$array['password'] = "ADMINPASSWORD"; // Admin Password
$radioStats = new radioStats( $array['host'], $array['port'], $array['extra'], $array['user'], $array['password']);
$returnStats = $radioStats->returnStats();
?>
<strong>Radio statistics for <?php echo $array['host'] . ":" . $array['port']; ?></strong><br /><br />
<div id="radio_stats">
<?php
if( $returnStats['serverStatus'] != 0 ) {
?>
<strong>Listeners:</strong>
<br />
<?php
echo $returnStats['currentListeners'];
?>
<br /><br />
<strong>Unique listeners:</strong>
<br />
<?php
echo $returnStats['uniqueListeners'];
?>
<br /><br />
<strong>Listener peak:</strong>
<br />
<?php
echo $returnStats['listenersPeak'];
?>
<br /><br />
<strong>Stream title:</strong>
<br />
<?php
echo $returnStats['serverTitle'];
?>
<br /><br />
<strong>Current song:</strong>
<br />
<?php
if( $returnStats['currentSong'] != "" ) {
echo $returnStats['currentSong'];
} else {
echo "Undefined";
}
?>
<br /><br />
<?php
}
else {
?>
This radio server appears to be offline.
<?php
}
?>
-----------------------------------------------------------------------------------------------------------------------
inc.php<?php
class radioStats {
public $tags;
public $serverStatus;
public $serverTitle;
public $currentListeners;
public $maxListeners;
public $uniqueListeners;
public $listenersPeak;
public $currentSong;
public $songList = array();
public function __construct( $server, $port, $extra, $user, $password ) {
/* Start cURL */
$session = curl_init();
curl_setopt( $session, CURLOPT_URL, $server . ":" . $port . $extra );
curl_setopt( $session, CURLOPT_HEADER, false );
curl_setopt( $session, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $session, CURLOPT_POST, false );
curl_setopt( $session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_setopt( $session, CURLOPT_USERPWD, $user . ":" . $password );
curl_setopt( $session, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $session, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
$xml = curl_exec( $session );
curl_close( $session );
/* End cURL */
/* Start Simple XML */
$simpleXML = simplexml_load_string( $xml );
$this->serverStatus = $simpleXML->STREAMSTATUS;
$this->serverTitle = $simpleXML->SERVERTITLE;
$this->currentListeners = $simpleXML->CURRENTLISTENERS;
$this->maxListeners = $simpleXML->MAXLISTENERS;
$this->uniqueListeners = $simpleXML->UNIQUELISTENERS;
$this->listenersPeak = $simpleXML->PEAKLISTENERS;
$this->currentSong = $simpleXML->SONGTITLE;
/* End Simple XML */
}
public function returnStats() {
$return = array();
$return['serverStatus'] = $this->serverStatus;
$return['serverTitle'] = $this->serverTitle;
$return['currentListeners'] = $this->currentListeners;
$return['maxListeners'] = $this->maxListeners;
$return['uniqueListeners'] = $this->uniqueListeners;
$return['listenersPeak'] = $this->listenersPeak;
$return['currentSong'] = $this->currentSong;
return $return;
}
}
?>
-----------------------------------------------------------------------------------
Te dwa skrypty umiescic na serwerze, po wpisaniu danych w pierwszym, dziala bez problemow. Skrypty zamieszczam, poniewaz moga sie komus przydac i nie sa obwarowane prawami autorskimi.