Système de ping de serveur en PHP

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 : Système de ping de serveur en PHP

Re: Système de ping de serveur en PHP

par moogli » 02 sept. 2016, 13:47

salut,

je suis étonné que cela fonctionne pour wow sachant que la variable host n'existe pas
<?php

// ip , port
 function wowstatus($ip, $port) {
        // alors ça non. en dev tu te fais une conf local, sinon y a des chances que ça reste et c'est pas top ;)
        error_reporting(0);
// ici c'est $ip pas $host
        $test = fsockopen($host,$port,$errno,$errstr,3);
        if(!$test)
        { echo "<b style=\"color:red\">Hors Ligne</b>";  }
        else {  echo "<b style=\"color:green\">En Ligne</b>"; }
        
    }
as tu testé les deux indépendamment ?

en dehors de ça il n'y a rien d'étonnant dans ton code.


je ne sais pas dans quel état sont tes jeux mais un test rapide me donne ceci
Heure du test : 02/09/2016 13:46:52
Status wow : Hors Ligne
--------------------------------------------------------------------------------
Status GM : En Ligne
code de test
<?php
$ipwow = "37.187.163.75";
$portwow = "8085";
$ipgmod = "37.187.163.75";
$portgmod = "27015";

function wowstatus($ip, $port)
{
    error_reporting(0);
    $test = fsockopen($host, $port, $errno, $errstr, 3);
    if (!$test) {
        echo "<b style=\"color:red\">Hors Ligne</b>";
    } else {
        echo "<b style=\"color:green\">En Ligne</b>";
    }
}
  function gmodstatus($ipgmod, $portgmod)
  {
      error_reporting(0);
      $sock = fsockopen("udp://".$ipgmod, $portgmod, $num, $error, 2);
      if (!$sock) {
          echo("<b style=\"color:red;\">Hors Ligne</b>");
      }
      if ($sock) {
          echo("<b style=\"color:green;\">En Ligne</b>");
          fclose($sock);
      }
  }

echo 'Heure du test : ',date('d/m/Y H:i:s'),'<br />';
echo 'Status wow : ',wowstatus($ipwow, $portwow),'<hr/>';
echo 'Status GM&nbsp; : ',gmodstatus($ipgmod, $portgmod),'<hr/>';

@+

Système de ping de serveur en PHP

par jak12210 » 02 sept. 2016, 11:47

Bien le bonjour a tous !
Voilà, je m'explique, je suis en train de créer le portail de ma communauté multigaming, seulement, voilà, sur l'accueil je souhaite afficher le status des serveurs.
Cela marche très bien pour Minecraft car j'utilise un script différent des deux autres, mais pour le serveur Garry's Mod et World Of Warcraft, cela ne fonctionne pas correctement, car en effet, il affiche bien le status des serveurs, mais si le serveur Garry's Mod est éteins et que le serveur World Of Warcraft est allumé, le serveur Garry's Mod affichera En Ligne...
Et même chose pour l'inverse.
Je ne sait vraiment pas comment résoudre ce problème, voici mes codes :
Page func.php :

Code : Tout sélectionner

function wowstatus($ip, $port) { error_reporting(0); $test = fsockopen($host,$port,$errno,$errstr,3); if(!$test) { echo "<b style=\"color:red\">Hors Ligne</b>"; } else { echo "<b style=\"color:green\">En Ligne</b>"; } } function gmodstatus($ipgmod, $portgmod) { error_reporting(0); $sock = fsockopen("udp://".$ipgmod,$portgmod,$num,$error,2); if( !$sock ){ echo( "<b style=\"color:red;\">Hors Ligne</b>"); } if( $sock ){ echo( "<b style=\"color:green;\">En Ligne</b>" ); fclose($sock); } }
Et la page index.php (qui affiche le résultat donc) :

Code : Tout sélectionner

<div class="col1-3"> <h2 class="separate">World of Warcraft 5.4.8</h2> <div class=""> <p>Status : <b style="color:green"><?php echo $script->wowstatus($ipwow, $portwow); ?></b> <br>Joueurs : <b><?php echo $script->online_wow($hotewow, $userwow, $passwow, $dbwow); ?>/150000</b> <br><br><a href="<?php echo $sitewow; ?>" class="button" title="World Of Warcraft 5.4.8"><span>Site Web</span></a></p> </div> </div> <div class="col1-3"> <h2 class="separate">Garry's Mod DarkRP</h2> <div class=""> <p>Status : <?php echo $script->gmodstatus($ipgmod, $portgmod); ?> <!--$query = source_query($ipgmod, $portgmod); $q = format_source_query($query); echo "Joueurs: ".$q['players']."/64"; --> <br><b>En Développement</b> <br><br><a href="<?php echo $sitegmod; ?>" class="button" title="Garry's Mod DarkRP"><span>Site Web</span></a></p> </div> </div>
Voilà, je vous remercie de jeter un œil a mon code :)

Edit : A noter que les IP des serveurs sont les mêmes, mais pas le port.
Voici :

Code : Tout sélectionner

$ipwow = "37.187.163.75"; $portwow = "8085"; $ipgmod = "37.187.163.75"; $portgmod = "27015";