Réalisation d'un ping sur un serveur.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Réalisation d'un ping sur un serveur.

par broska » 11 nov. 2008, 20:58

J'ai trouvé le souci c'était le numéro de port ( 8000 ) qui posait problème... Mon hébergeur autorise seulement le port 80 pour la fonction 'fsckopen' .
Merci beaucoup de ton aide maintenant amélioration du script héhéhé cool !!!!!!

par chrislabricole » 11 nov. 2008, 16:16

Donc avec ou sans la radio allumée, le fichier stream.m3u est toujours le même ??

Si c'est le cas, il faut utiliser la méthode de télécharger le fichier / avec PHP, puis de détecter si le bloc est existant ou pas...

Une idée me viens à l'esprit !

Peut tu copier ici le code avant qu'il soit généré par le serveur ? c'est un fichier index qui est dans ton Program Files et dans ton répertoire IceCast. Je crois qu'il ressemble à du XML, plus trop sur...
Avec ce code source on va pouvoir créer quelque chose de simple et de beaucoup moins lourd pour PHP ;)
Pour que IceCast fasse une petite liste de tes radios...

Au fait, tu en as plusieurs de radios sur le même serveur ? ou qu'une seule ?

par broska » 11 nov. 2008, 16:10

Si il pèse tout de même quelque chose...

Tiens j'ai trouvé se code si, pour lire sur le fichier status2.xls
<?php

function connect_icecast($host, $port)
{
    $fp = @fsockopen($host, $port, $errno, $errstr, 3);
    
    if(!$fp)
        return false;

    fputs($fp, 'GET /status2.xsl' . " HTTP/1.0\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)\r\n\r\n");
    
    $page = '';
    while(!feof($fp))
        $page .= fread($fp, 1000);
    
    fclose($fp);
    return $page;
}

function tab_icecast($host, $port)
{
    $contenu = connect_icecast($host, $port);

    if ($contenu)
    {
        $tabChamps = array(2 => 'name', 3 => 'listeners', 4 => 'description', 5 => 'artist', 6 => 'title', 7 => 'url');

        if (preg_match_all('`(/[^,]*),,([^,]*),([^,]*),([^,]*),([^-]*) - ([^,]*),([^,<\/]*)`', $contenu, $resultat))
        {
         foreach($resultat[1] as $numPoint => $mountName)
                  foreach ($tabChamps as $index => $champ)
                     $tabIce[$mountName][$champ] = $resultat[$index][$numPoint];

             return $tabIce;
        }
    else
        return false;
    }
    else
        return false;
}


$tabIceCast = tab_icecast('www.metalizer.fr', 8000);

if($tabIceCast)
{
     echo '<pre>';
          print_r($tabIceCast);
     echo '</pre>';
}
else
    echo 'Parsing impossible';

?>
Je sais pas si sa vas te dire quelque chose ... J'ai pas tout saisi à l'heure code .
Enfin sa peut-être une amélioration mais sa ne résous pas mon problème de 'Offline' ....

J'ai essayé avec une adresse style www.google.fr et la sa fonctionne mais bon toujours pas avec mon serveur.

par chrislabricole » 11 nov. 2008, 16:07

Donc quand le serveur et la radio sont dispos, quand tu vas sur http://xxx.xxx.xxx.xxx:8000/stream.m3u, il te fait télécharger un fichier supérieur à 0Ko ?
Et quand Winamp est coupé, qu'il n'y a plus de radio mais juste le serveur, et que tu vas sur http://xxx.xxx.xxx.xxx:8000/stream.m3u il te fais quand même télécharger le fichier mais il est totalement vide, il fait 0Ko...

C'est bien ça ?

par broska » 11 nov. 2008, 16:04

Alors oui lorsque tu lance le http://xxx.xxx.xxx.xxx:8000:stream.m3u, il te le télécharge, ensuite lorsque tu coupe winamp la page de status de la radio reste mais elle retire tout les infos ... tu veux les code html lorsqu'il y a le son et lorsqu'ils n'y en a pas ?

par chrislabricole » 11 nov. 2008, 15:59

Cool, j'utilisais IceCast moi aussi :)
D'après se que je me rappelle, quand tu vas sur l'adresse IP du serveur, c-à-d :
http://xxx.xxx.xxx.xxx:8000/
Tu as une page avec plusieurs blocs gris (si ça n'a pas changé depuis) et chaque blocs représentes une radio, dedans, tu as le titre en cours etc
Et si tu coupes Winamp, tu as un bloc gris en moins...
Dans tout les cas, avec PHP il faudra télécharger la page, se que je te propose c'est de l'analyser, pour savoir si il y a ce bloc ou pas, car forcément, il y a quelque chose qui change dans l'HTML...

Mais sinon, avec le serveur allumé et Winamp également, quand avec ton navigateur tu vas sur http://xxx.xxx.xxx.xxx/stream.m3u, le navigateur te propose de télécharger le fichier m3u ? et si tu coupes Winamp, et que tu revas à la même adresse, que se passe t-il ? erreur 404 ?

par broska » 11 nov. 2008, 15:50

J'utilise Icecast et je vois pas trop ce que tu veux dire avec l'index ???

par chrislabricole » 11 nov. 2008, 15:47

Avec le code de tout à l'heure (online et offline) il indique seulement si le serveur est en route ou pas.

Sinon, tu utilises quoi ? IceCast ? ShoutCast ?
Sur l'index du serveur, tu dois bien avoir quelque chose qui change quand tu éteint Winamp non ?

par broska » 11 nov. 2008, 15:39

J'ai voulu être trop joyeux... Lorsque ma radio est en ligne l'info ne change pas sur la page..

par chrislabricole » 11 nov. 2008, 15:32

Tu créer par exemple un fichier .php avec seulement ce code dedans, puis, avec les autre page tu inclut se fichier de cette façon:
include('ton_fichier.php');
C'est ça que tu veux ou j'ai mal compris ? :P

par broska » 11 nov. 2008, 15:20

Yesss sa fonctionne merci, mais je risque d'avoir d'autres questions à propos de cela.
Donc maintenant je voudrais que se script soit utiliser dans une page html c'est a dire que je puisse l'utiliser sur différentes pages ...

par chrislabricole » 11 nov. 2008, 14:51

Ok, ouais :)

par broska » 11 nov. 2008, 14:49

je vais tester après manger héhéhé et je te tiens au jus?

par chrislabricole » 11 nov. 2008, 14:43

Donc voilà comment tu l'utilises
function is_online($host, $port){
	$online = FALSE;
 
	$fp = @fsockopen($host, $port, $errno, $errstr, 1); // Se connecte à l'Host
	if($fp) {
		$online = TRUE; // Si la connexion n'a pas échouée
	}
 
	if ($online){ // Si c'est TRUE
	  return '<span style="color:#00FF00">Online</span>';
	} else { // Et si c'est FALSE
	  return '<span style="color:#FF0000">Offline</span>';
	}
}
echo is_online('xxx.xxx.xxx.xxx', 8000);
Non, tu ne peux pas mettre stream.m3u
Car c'est seulement le serveur :P
Sinon, se que tu peux faire, déjà, c'est de tester la différence entre les 2, si stream.m3u existe, il fait quoi ? il te le fait télécharger je suppose ? et si il n'existe pas (que donc la radio n'est pas connectée), il renvoi quoi ? une erreur 404 Not Found ?

par broska » 11 nov. 2008, 14:36

Merci, dans le $host je peux donner une URL de type http://xxx.xxx.xxx.xxx/stream.m3u ??? car le serveur est toujours connecté mais pas forcément la radio .
Mais le port 8000 est ouvert donc il risque de répondre non ? Même si je service n'est pas lancé ???
Voilà merci.