Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1811 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Status d'un serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Status d'un serveur

n°1384819
Orchrist
Life is a war
Posté le 09-06-2006 à 19:32:22  profilanswer
 

Bonjour a tous! Je possède un serveur de jeu pour usage d'une team Battlefield 2 (entrainements etc.).  
J'aimerais installer sur une page php le status du serveur: online ou offline. Pour cela j'ai créé deux images. J'avais une astuce pour faire ce genre de notification, mais c'est un script assez hasardeux, et je ne le trouve pas propre pour ma page php...  
 

Code :
  1. <img src="http://xxx.xxx.xxx.xxx:80/online.gif" onerror="this.src='http://xxx.free.fr/offline.gif';" />


 
En plus ce script me force a installer apache ou autre sur ma machine serveur, et je n'arrive pas à le configurer correctement...
 
Existe-il un moyen de vérifier si un serveur existe et d'afficher une image en conséquence? je ne connais pas les focntions nécessaires pour cette requete...  :(  
 
merci a vous d'avance!  :jap:

mood
Publicité
Posté le 09-06-2006 à 19:32:22  profilanswer
 

n°1384904
nargy
Posté le 09-06-2006 à 22:36:19  profilanswer
 

Une possibilité, mais à tester dans le cas de ton serveur, est d'ouvrir une connection internet sur le port de ton serveur, puis de vérifier que cette connexion n'a pas échouée.
 
Regarde la page de manuel suivante:
http://php.net/fsockopen
renseigne toi sur le port utilisé par ton serveur, et tente d'ouvrir avec cette fonction une connexion.
 
Si tu ne connais pas le port, tu peut essayer le port 7, qui est généralement ouvert lorsque la machine est en réseau, mais qui est fermé sur certaines machines avec protections.
 
Dès que tu a déterminé si la connexion est valide, tu peut la fermer. Celà peut poser problème sur le port de ton serveur, à toi de faire le test s'il le supporte.

n°1384906
Orchrist
Life is a war
Posté le 09-06-2006 à 22:38:01  profilanswer
 

ok je vais voir pour cette fonction... mais il existe pas tout simplement une fonction équivalent au "ping" de DOS en php? Ou bien c'est la fonction que tu m'as donnée?

n°1384913
nargy
Posté le 09-06-2006 à 22:45:34  profilanswer
 

Le ping, c'est le port 7.
Normalement le ping envoie un message sur le port 7, ce message est retourné tel quel. Mais tu n'a pas forcément besoin d'envoyer un message si tu ne veut pas connaître le taux de transfert / temps de connexion.
 
Sinon, sur le forum, il y a des exemples de pings, mais avec la commande externe ping de DOS/unix. Il n'y a pas de base en PHP de fonction ping.

n°1384914
Orchrist
Life is a war
Posté le 09-06-2006 à 22:48:31  profilanswer
 

ok donc je vais pas essayer de faire un truc qui existe pas... si vous trouvez quelque chose pour faire un test serveur et retourner une réponse je veux bien essayer. Je vais déjà essayer de trouver avec la comande fsockopen mais je ne comprend pas grand chose à comment utiliser cette fonction...

n°1384917
nargy
Posté le 09-06-2006 à 22:59:45  profilanswer
 

Code :
  1. // retourne un booléen indiquant si une connexion vers l'hôte est possible
  2. function mini_ping($serveur, $port=80)
  3. { // ouvrir une connexion
  4.   $s=fsockopen($serveur, $port);
  5.   if(!$s) return false; // retourne FAUX si connexion échouée
  6.   fclose($s); // sinon refermer la connexion
  7.   return true; // retourner VRAI
  8. }


edit: ha oui exact, ça ne fonctionne pas avec le port 7. Essayer avec le port 80?

Message cité 1 fois
Message édité par nargy le 10-06-2006 à 08:22:34
n°1384918
nargy
Posté le 09-06-2006 à 23:02:26  profilanswer
 

edit: ça devrai aller

n°1384919
Orchrist
Life is a war
Posté le 09-06-2006 à 23:04:23  profilanswer
 

ok j'ai mieux compris! Mais je met aussi:

Code :
  1. $serveur=xxx.xxx.xxx.xxx
  2. $status="http://xxx.xxx.xxx.xxx/online.jpg"


Mais il manque pas un else pour si on arrive ou pas à se connecter? a quoi correspondent le return false et true? désolé pour ma non compréhension mais je début vraiment en php... c'est gentil de m'aider!

n°1384921
afbilou
pouet your life
Posté le 09-06-2006 à 23:08:54  profilanswer
 

La notion de ports n'est valable que pour les protocoles tcp et udp !
Ping utilise ICMP, qui s'appuie sur IP ... mais en aucun cas sur tcp ou udp :s

n°1384922
Orchrist
Life is a war
Posté le 09-06-2006 à 23:09:36  profilanswer
 

ah, donc le script n'est pas valable?

mood
Publicité
Posté le 09-06-2006 à 23:09:36  profilanswer
 

n°1384926
afbilou
pouet your life
Posté le 09-06-2006 à 23:14:49  profilanswer
 

Absolument pas si tu veux faire un 'ping' vers une machine.
Maintenant tu peux lancer une connexion via socket en utilisant un port que tu sais etre ouvert sur la machine distante ... si le port est ouvert et que la connexion avec socket fonctionne ca veut dire que la machine est sur le reseau ... dans le cas contraire non.


Message édité par afbilou le 09-06-2006 à 23:18:09
n°1384929
Orchrist
Life is a war
Posté le 09-06-2006 à 23:17:04  profilanswer
 

arf! Comment faire un script valable alors?tu peux m'aider?

n°1384978
nargy
Posté le 10-06-2006 à 08:13:53  profilanswer
 

Sur le forum:
http://forum.hardware.fr/hardwaref [...] 0365-1.htm
Sinon, j'ai changé le code ci-dessus pour le faire fonctionner sur le port 80 (vérification serveur web actif), et je l'ai commenté.


Message édité par nargy le 10-06-2006 à 08:24:16
n°1384984
Orchrist
Life is a war
Posté le 10-06-2006 à 09:24:43  profilanswer
 

nargy a écrit :

Code :
  1. // retourne un booléen indiquant si une connexion vers l'hôte est possible
  2. function mini_ping($serveur, $port=80)
  3. { // ouvrir une connexion
  4.   $s=fsockopen($serveur, $port);
  5.   if(!$s) return false; // retourne FAUX si connexion échouée
  6.   fclose($s); // sinon refermer la connexion
  7.   return true; // retourner VRAI
  8. }




 
Je veux bien, mais en fait, quel est le résultat affiché si la connexion est réussi ou ratée? parce que mon but est de mettre une image... doit y avoir une autre partie au script ?

n°1384990
sielfried
Posté le 10-06-2006 à 09:51:29  profilanswer
 
n°1385035
nargy
Posté le 10-06-2006 à 11:57:48  profilanswer
 

Après tout, ce code est souvent demandé....
 
Deux fichiers:
ping.php:
prends en argument:

  • host: le serveur à pinger
  • urlon: l'url de l'image à afficher si le serveur est actif
  • urloff: l'url de l'image à afficher si le serveur est éteint
  • timeout: optionel, à 1 seconde par défaut, temps maximal du ping apès lequel le serveur est considéré hors ligne


page.php: exemple d'utilisation de la page ping.php
Définit la fonction suivante:
function ping_image($host, $urlon, $urloff, $urlwait, $alt, $width=0, $height=0, $timeout=0)
avec les paramètres:

  • $host: serveur à tester
  • $urlon: url de l'image si serveur actif
  • $urloff: url de l'image si serveur éteint
  • $urlwait: url de l'image pour patienter lors du ping
  • $alt: texte alternatif au cas où les images sont indisponibles
  • $width: taille des images, optionel mais plus joli
  • $height: taille des images, optionel mais plus joli
  • $timeout: optionel, 1 seconde par défaut


ping.php:

Code :
  1. <?
  2. function mini_ping($host, $timeout=1)
  3. {
  4.   // vérifier paramètre
  5.   $timeout=(int)$timeout;
  6.   if($timeout==0) $timeout=1;
  7.   // detecter si serveur sous unix
  8.   if($_SERVER['SCRIPT_FILENAME'][0]=="/" )
  9.     exec('ping -c1 -w'.escapeshellarg($timeout).' '.escapeshellarg($host) , $out, $ret);
  10.   else // ou windows
  11.     exec('ping -n 1 -w '.escapeshellarg($timeout).' '.escapeshellarg($host) , $out, $ret);
  12.   return $ret==0;
  13. }
  14. // rediriger le navigateur suivant le résultat du ping
  15. if(mini_ping($_GET['host'], $_GET['timeout']))
  16.   header("Location: ".$_GET['urlon']);
  17. else
  18.   header("Location: ".$_GET['urloff']);
  19. ?>


 
page.php:

Code :
  1. <?
  2. function ping_image($host, $urlon, $urloff, $urlwait, $alt, $width=0, $height=0, $timeout=0)
  3. { // vérif des arguments
  4.   $width=(int)$width;
  5.   $height=(int)$height;
  6.   // afficher une image stylisée
  7. ?>
  8. <img style="<? if ($width) echo 'width:'.$width.'px;'; ?><? if ($height) echo 'height:'.$height.'px;'; ?>background:url(<? echo htmlentities($urlwait) ?> )" alt="<? echo htmlentities($alt) ?>" src="ping.php?host=<? echo htmlentities($host) ?>&timeout=<? echo htmlentities($timeout) ?>&urlon=<? echo htmlentities($urlon) ?>&urloff=<? echo htmlentities($urloff) ?>">
  9. <?
  10. }
  11. // exemple d'utilisation:
  12. ping_image("forum.hardware.fr",
  13.            "server-on.png",
  14.            "server-off.png",
  15.            "server-wait.png",
  16.            "...",
  17.            64, 64, 3);
  18. ?>


Oilà... chez moi ça marche, mais pas testé sous windoz. Si ya des volontaires... ou des commentaires.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Status d'un serveur

 

Sujets relatifs
[JavaScript] Récupérer une variable serveurChangement de serveur : restaurer une base de données
Ajax qui fonctionne sur serveur local mais pas sur un serveur distantServeur IRC en Python
Question sur les "check status" de google analytics[Java] pas de synchro entre le serveur et les clients
Serveur web en C[VB.NET 2.0] Lancer une application installee sur un serveur...
Serveur web : déconne avec FF mais pas IEStatus pour un serveur en php ou javascript ?
Plus de sujets relatifs à : Status d'un serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR