Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour à tous :P

 

Voila, j'ai un script en PHP me permettant de pinger differents serveurs de mon choix et de les afficher via une page web...

Le problème étant que je cherche à afficher une image en fonction du ping renvoyé...

Et non de sa reponse ou non au ping.

Actuellement j'affecte une image à un serveur online (qui repond au ping) et une autre pour un serveur offline...

Mais j'aurai aimé attribué une image intermédiaire pour les serveurs ayant un ping élévé...

D'autant que le script intègre une fonction d'affichage du ping...

Mais je ne parviens pas à faire la liaison entre le ping et l'image affiché en fonction du ping.

 

Je vous met le code correspondant à la partie ping :

 

$time_start = getmicrotime();

if( @fsockopen( $server[$i]['addr'], $port[$j], &$errno, &$errstr, 5) )
{
echo '<img src="online.gif"/>'."\n";
$time_end = getmicrotime();
$ping = round(($time_end - $time_start) * 1000);
}
else
{
echo '<img src="offline.gif"/>'."\n";
$ping = 'N/A';
}



echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
echo $ping;
echo '</td></tr>'."\n";
}

 

La page de ping est accessible ici, c'est une version de test...

 

http://koisha.free.fr/bla/ping.php

 

Ce que je souhaiterais c'est que l'image apparaissant dans la colonne centrale ne soit plus attribué par le Status ONLINE/OFFLINE, mais par une valeur de ping. (Dans le genre entre 1-50 ping, une icone verte, entre 51 et 200 une icone orange et entre 201 et 500 une icone rouge...)

 

En vous remerciant par avance :P

Posté(e)

Puisque tu sais afficher $ping, tu devrais pouvoir en récupérer la valeur numérique et la tester, non ?

Je ne comprends pas trop où est le problème... (quoique, quand je te vois affecter une chaine de caractères à $ping, j'ai quelques soupçons)

Au lieu de faire afficher l'image en même temps que tu détermines la valeur du ping, pourquoi ne pas "sortir" le echo correspondant (en affectant un truc genre MAX_VALUE, si ça existe en PHP, à $ping s'il n'y a pas de réponse) et construire un test pour faire afficher une image différente en fonction de la valeur, après cette récupération ?

Posté(e) (modifié)

tu peux faire simplement :

$time_start = getmicrotime();

if( @fsockopen( $server[$i]['addr'], $port[$j], &$errno, &$errstr, 5) )
{
$time_end = getmicrotime();
$ping = round(($time_end - $time_start) * 1000);
if($ping <= 50) echo '<img src="online_vert.gif"/>'."\n";
if($ping > 50 AND $ping <= 200) echo '<img src="online_orange.gif"/>'."\n";
if($ping > 200) echo '<img src="online_rouge.gif"/>'."\n";
}
else
{
echo '<img src="offline.gif"/>'."\n";
$ping = 'N/A';
}



echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
echo $ping;
echo '</td></tr>'."\n";

Par contre, la fonction getmicrotime n'existe pas, c'est microtime tout court :P

Modifié par mediaforest
Posté(e)

Merci a tous pour vos reponses, en les lisant je vois que je me suis pas planté ^^, mais je vais corriger les fautes que vous m'avez signaler... (pour le getmicrotime() )

J'ai reussi a trouver seul avant de revenir vérifier le forum :-P

Désolé si vous voyez des absurdités mais je débute tout juste le PHP ^^

 

Merci encore, j'hésiterais pas à revenir vu l'aide bien sympa que j'ai eu :P

(bien entendu, uniquement si je m'en sort vraiment pas seul cette fois-ci :P )

  • 2 ans après...
Posté(e)

heuuu ya un bug dans ton programme xD

 

la fonction getmicrotime est une fonction qui permet de séparer les millisecondes des microsecondes

 

en clair, ta un ping négatif a chaque fois que le script se fait entre 2 secondes.....

 

function getmicrotime() 
{ 
list($usec, $sec) = explode(" ",microtime()); 
return ((float)$usec + (float)$sec); 
} 


$time_start = getmicrotime(); 
$time_end = getmicrotime(); 
$time = $time_end - $time_start;</code>

  • Modérateurs
Posté(e)

Le problème semble avoir trouvé sa solution.

Ainsi, afin de signaler clairement à ceux qui ont un problème similaire qu'ils ont peut-être une solution toute trouvée (s'ils pensent à utiliser la fonction Recherche en indiquant le mot-clé "résolu" auparavant), et afin de signaler aux autres contributeurs qu'il est inutile de continuer à se creuser la tête sur le problème (à moins d'avoir des suppléments d'informations à apporter pour mieux comprendre ce qui posait problème), un modérateur a préfixé le titre du topic avec la mention [résolu].

Merci, à l'avenir, de bien vouloir prendre à votre charge cette mise à jour quand vous estimez que votre problème a été résolu de manière satisfaisante (et parallèlement, si le problème a disparu "mystérieusement", inutile d'induire les gens en erreur :P) Pour cela, p_edit.gif votre premier message :P

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...