[PHP] Vérifier si un serveur est online + afficher un texte si online

Vérifier si un serveur est online + afficher un texte si online [PHP] - PHP - Programmation

Marsh Posté le 18-10-2002 à 16:33:44    

c'est possible ca ? j'y connais rien en PHP...
 
donc ce que j'aimerais pour ceux qui n'ont pas compris, c'est afficher le texte "Serveur Online" si le serveur est effectivement online --> pour cela il faut évidemment le vérifier avant... (mais est-ce possible ?)
 
merci.  :hello:

Reply

Marsh Posté le 18-10-2002 à 16:33:44   

Reply

Marsh Posté le 18-10-2002 à 16:37:03    

fsockopen et www.php.net sont tes amis ;)
$fp= @fsockopen('http://adresse.net',...); //je connais plus trop les arguments
if ($fp){
  echo 'online';
}
else{
 echo 'offline';
}
@fclose($fp); //a vérifier


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 16:39:24    

ethernal a écrit a écrit :

fsockopen et www.php.net sont tes amis ;)
$fp= @fsockopen('http://adresse.net',...); //je connais plus trop les arguments
if ($fp){
  echo 'online';
}
else{
 echo 'offline';
}
@fclose($fp); //a vérifier




 
et tu penses que ca marche aussi si c un FTP qu'il faut tester ?
 
merci.
 
PS: je pense que ca va être compliqué à réaliser...j'y connais rien rien rien en PHP  :D

Reply

Marsh Posté le 18-10-2002 à 16:53:13    

mais non... c'est bidon !
 

Code :
  1. <?
  2. function verif_ftp($addresse){
  3.   $fp= fsockopen ( $adresse, 21, $errno, $errstr, 30);
  4.   if ($fp){
  5.     echo 'FTP online';
  6.   }
  7.   else{
  8.     echo 'FTP offline';
  9.   }
  10.   fclose($fp);
  11. }
  12. //utilisation :
  13. verif_ftp('ftp.belnet.be');
  14. verif_ftp('ftp.test.net');
  15. ...
  16. ?>


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 16:55:50    

ethernal a écrit a écrit :

mais non... c'est bidon !
 

Code :
  1. <?
  2. function verif_ftp($addresse){
  3.   $fp= fsockopen ( $adresse, 21, $errno, $errstr, 30);
  4.   if ($fp){
  5.     echo 'FTP online';
  6.   }
  7.   else{
  8.     echo 'FTP offline';
  9.   }
  10.   fclose($fp);
  11. }
  12. //utilisation :
  13. verif_ftp('ftp.belnet.be');
  14. verif_ftp('ftp.test.net');
  15. ...
  16. ?>






 
je peux copier-coller ce que tu m'as donnés en mettant les adresses FTP souhaités ?  :D

Reply

Marsh Posté le 18-10-2002 à 16:59:19    

oui ;)
 
si tes ftp ont des ports différents du '21', tu ajoutes un argument à la fonction, genre $port, et tu mets $port à la place de '21' dans la fonction fsockopen.
 
le 30 correspond au délais d'attente pour la réponse du serveur... ce qui peut ralentir fortement le temps d'affichage de la page.


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 17:02:40    

ethernal a écrit a écrit :

oui ;)
 
si tes ftp ont des ports différents du '21', tu ajoutes un argument à la fonction, genre $port, et tu mets $port à la place de '21' dans la fonction fsockopen.
 
le 30 correspond au délais d'attente pour la réponse du serveur... ce qui peut ralentir fortement le temps d'affichage de la page.




 
je peux pas simplement remplacer le 21 par 1021 puisque le ftp en question est sur le port 1021.
 
Merci beaucoup beaucoup en tout cas! je vais tester!!!  :jap:  :jap:

Reply

Marsh Posté le 18-10-2002 à 17:07:36    

oui bien sûr, je disais juste ça pour le cas ou tu en aurais un sur le port 21, un autre sur le port 1000,...


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 17:17:31    

ok  :jap: j'ai essayé...mais apparemment y'a un petit problème :
 
voilà ce que j'ai mis dans mon fichier ftp_online.php :
 

Code :
  1. <?
  2. function verif_ftp($addresse){
  3. $fp= fsockopen ( $adresse, 99, $errno, $errstr, 30);
  4. if ($fp){
  5.    echo 'FTP online';
  6. }
  7. else{
  8.    echo 'FTP offline';
  9. }
  10. fclose($fp);
  11. }
  12. //utilisation :
  13. verif_ftp('ftp://platypus.dtdns.net');
  14. verif_ftp('ftp://aaa:aaa@platypus.dtdns.net');
  15. ?>


 
et voilà ce qu'il me répond :
 

Code :
  1. FTP offline
  2. Warning: fclose(): supplied argument is not a valid File-Handle resource in d:\easyphp\www\ftp_online.php on line 10
  3. FTP offline
  4. Warning: fclose(): supplied argument is not a valid File-Handle resource in d:\easyphp\www\ftp_online.php on line 10


 
mon FTP est sur l'adresse suivante : ftp://platypus.dtdns.net PORT 99 --> il est ouvert!
 
et avec un accès "read" voilà l'adresse : ftp://aaa:aaa@platypus.dtdns.net:99 (avec le port inclu donc)
 
 
tu vois la source du problème ??

Reply

Marsh Posté le 18-10-2002 à 17:22:36    

'ai fait une tite faute de frappe ;)
$adresse avec 2 'd' partout
une fois qu'il les détecte correctement met un @ devant le fclose, ça évitera ce message d'erreur si le ftp est fermé.
 
 

Code :
  1. <? 
  2. function verif_ftp($addresse){ 
  3. $fp= fsockopen ( $addresse, 99, $errno, $errstr, 30); 
  4. if ($fp){ 
  5.   echo 'FTP online'; 
  6. else
  7.   echo 'FTP offline'; 
  8. fclose($fp); 
  9. //utilisation :  
  10. verif_ftp('ftp://platypus.dtdns.net'); 
  11. verif_ftp('ftp://aaa:aaa@platypus.dtdns.net');
  12. ?>


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 17:22:36   

Reply

Marsh Posté le 18-10-2002 à 17:24:05    

ethernal a écrit a écrit :

'ai fait une tite faute de frappe ;)
$adresse avec 2 'd' partout
une fois qu'il les détecte correctement met un @ devant le fclose, ça évitera ce message d'erreur si le ftp est fermé.
 
 

Code :
  1. <? 
  2. function verif_ftp($addresse){ 
  3. $fp= fsockopen ( $addresse, 99, $errno, $errstr, 30); 
  4. if ($fp){ 
  5.   echo 'FTP online'; 
  6. else
  7.   echo 'FTP offline'; 
  8. fclose($fp); 
  9. //utilisation :  
  10. verif_ftp('ftp://platypus.dtdns.net'); 
  11. verif_ftp('ftp://aaa:aaa@platypus.dtdns.net');
  12. ?>






 
ok, je reteste! c'est fou tout ce qu'on peut faire  :D !!!

Reply

Marsh Posté le 18-10-2002 à 17:28:46    

CA MARCHE!!!!!
 
t'es un génie!!! merci beaucoup  :jap:  :jap:  :jap:

Reply

Marsh Posté le 18-10-2002 à 17:31:33    

non non ;)
c'est toi qui a décidé de te mettre au PHP, et c'est une très bonne idée ! :lol:


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 17:43:59    

ethernal a écrit a écrit :

non non ;)
c'est toi qui a décidé de te mettre au PHP, et c'est une très bonne idée ! :lol:




 
ouais! je VEUX absolument m'y mettre...jusqu'au 14 novembre je dois encore bosser mon travail de maturité...mais après ca cavachier! :D
 
encore 2 petites questions :
 
- Est-il possible de faire apparaître "FTP Online" en vert et "FTP Offline" en rouge ?
 
- Est-il possible de mettre la première partie du "script" dans un fichier et la deuxième ou on veut sur un page ?
 
Pour la 2e question, je pensais à ca :
 
Première partie :
 

Code :
  1. <? 
  2. function verif_ftp($addresse){ 
  3. $fp= fsockopen ( $addresse, 99, $errno, $errstr, 30); 
  4. if ($fp){ 
  5. echo 'FTP online'; 
  6. else
  7. echo 'FTP offline'; 
  8. fclose($fp); 
  9. }
  10. ?>


 
Et la 2e partie et bien on la fait apparaître sur les pages ou on en a besoin... La 2e partie serait donc le contrôle d'un ftp par exemple :
 

Code :
  1. <?
  2. verif_ftp('ftp.platypus.dtdns.net');
  3. ?>


 
Merci encore pour ton aide!!!


Message édité par le_duc le 18-10-2002 à 17:45:31
Reply

Marsh Posté le 18-10-2002 à 18:20:09    

en vert, ou en rouge : c'est de l'html, modifie le contenu de "echo".
echo '<font color="#55aa00">FTP online</font>' (idem pour rouge)
 
séparation du code :
ex fichier "fonction_ftp.php"

Code :
  1. <?   
  2. function verif_ftp($addresse){   
  3. $fp= fsockopen ( $addresse, 99, $errno, $errstr, 30);   
  4. if ($fp){   
  5. echo 'FTP online';   
  6. }   
  7. else{   
  8. echo 'FTP offline';   
  9. }   
  10. fclose($fp);   
  11. ?>


 
fichier "mes_ftp.php"

Code :
  1. <?
  2. include ('fonction_ftp.php');
  3. verif_ftp('ftp.platypus.dtdns.net');
  4. verif_ftp('ftp.blabla.net');
  5. ?>



---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 18:22:51    

ethernal a écrit a écrit :

en vert, ou en rouge : c'est de l'html, modifie le contenu de "echo".
echo '<font color="#55aa00">FTP online</font>' (idem pour rouge)
 
séparation du code :
ex fichier "fonction_ftp.php"

Code :
  1. <?   
  2. function verif_ftp($addresse){   
  3. $fp= fsockopen ( $addresse, 99, $errno, $errstr, 30);   
  4. if ($fp){   
  5. echo 'FTP online';   
  6. }   
  7. else{   
  8. echo 'FTP offline';   
  9. }   
  10. fclose($fp);   
  11. ?>


 
fichier "mes_ftp.php"

Code :
  1. <?
  2. include ('fonction_ftp.php');
  3. verif_ftp('ftp.platypus.dtdns.net');
  4. verif_ftp('ftp.blabla.net');
  5. ?>


 




 
ahah! okok! merci encore  :hello:

Reply

Marsh Posté le 18-10-2002 à 18:34:30    

ethernal a écrit a écrit :

oui ;)
le 30 correspond au délais d'attente pour la réponse du serveur... ce qui peut ralentir fortement le temps d'affichage de la page.




 
à ce propos, c'est en seconde ? pasque si le script doit juste vérifier si le FTP est ouvert ou pas, je peux mettre 5 seconde non ?

Reply

Marsh Posté le 18-10-2002 à 18:42:14    

oui c'est en seconde, ça dépend de la rapidité de ta connexion et de celle serveur, mais 5 devrait marcher.
Si tu remarques trop de serveur down alors qu'ils sont onlines, augmente la valeur


---------------
...oups kernel error...
Reply

Marsh Posté le 18-10-2002 à 19:42:07    

bon...j'ai déjà trop abusé de ta bonté  :jap: , mais j'ai pas compris ce que t'as expliqué si il y avait plusieurs ports...j'ai remarqué que j'avais quand même 1-2 FTP a contrôler qui ne sont pas sur le port 1021...et qui ont des ports différents.

Reply

Marsh Posté le 19-10-2002 à 09:08:00    

hum... relis le code et comprends le un peu ;)
la notion de paramètre ($addresse est un paramètre/argument)
->> function verif_ftp($addresse,$port){
//appel d'une fonction
-->> fsockopen($addresse,$port,...);
"echo" permet d'afficher
if (condition){
  //commandes
}
else{
//commandes
}


---------------
...oups kernel error...
Reply

Marsh Posté le 19-10-2002 à 10:53:25    

ethernal a écrit a écrit :

hum... relis le code et comprends le un peu ;)
la notion de paramètre ($addresse est un paramètre/argument)
->> function verif_ftp($addresse,$port){
//appel d'une fonction
-->> fsockopen($addresse,$port,...);
"echo" permet d'afficher
if (condition){
  //commandes
}
else{
//commandes
}




 
ouais ok...mais dans la 2e partie, il ira chercher ou le port ???
 

Code :
  1. <?
  2. include ('fonction_ftp.php');
  3. verif_ftp('platypus.dtdns.net'); 
  4. verif_ftp('ftp.blabla.net'); 
  5. ?>

Reply

Marsh Posté le 19-10-2002 à 12:22:47    

si tu donnes un paramètre de plus à ta fonction, tu dois lors de l'appel le spécifier aussi :
ex:  
function hello($arg_texte1, $arg_numerique2, $arg_texte3='test';){
//blabla
}
 
//appel :
hello('mon_argument1',25,'testons';);  
hello('blabla',25); //dans ce cas, comme le dernier argument n'est pas spécifier, il prends celui par défaut, cad 'test'


---------------
...oups kernel error...
Reply

Marsh Posté le 19-10-2002 à 12:41:16    

ethernal a écrit a écrit :

si tu donnes un paramètre de plus à ta fonction, tu dois lors de l'appel le spécifier aussi :
ex:  
function hello($arg_texte1, $arg_numerique2, $arg_texte3='test';){
//blabla
}
 
//appel :
hello('mon_argument1',25,'testons';);  
hello('blabla',25); //dans ce cas, comme le dernier argument n'est pas spécifier, il prends celui par défaut, cad 'test'
 




 
bon c'est combien des cours privés ? j'habite en Suisse, près de Fribourg  :D  :D  :lol:  
 
merci encore.

Reply

Marsh Posté le 19-10-2002 à 13:22:20    

:lol: :lol: je pense pas que je sois un bon prof :D
a+


---------------
...oups kernel error...
Reply

Marsh Posté le 21-10-2002 à 13:18:06    

encore une petite question  ;) :
 
Avec cette fonction on sait si le FTP est online ou offline, mais y'a-t-il une fonction qui permette de voir si le FTP est complet ou pas ? Ca serait grave intéressant ca  :ouch:  :ouch:

Reply

Marsh Posté le 21-10-2002 à 13:51:33    

:bounce:

Reply

Marsh Posté le 21-10-2002 à 13:53:47    

complet ?
tu veux dire qu'il n'y aurait plus de place dessus pour uploader ?
S'il te donne ces infos lors de la connexion, oui il y a sans doute moyen d'extraire le résultat... mais c'est plus compliqué puisque tu dois connaitre le protocol ftp (envoi et réception de données).  je pense qu'il y a des fonctions existante en php qui devrait te permettre de communiquer facilement avec le serveur mais j'y connais rien là :(
 
tu dois consulter les rfc sur le protocole ftp et regarder la doc sur www.php.net


---------------
...oups kernel error...
Reply

Marsh Posté le 21-10-2002 à 14:24:30    

ethernal a écrit a écrit :

complet ?
tu veux dire qu'il n'y aurait plus de place dessus pour uploader ?
S'il te donne ces infos lors de la connexion, oui il y a sans doute moyen d'extraire le résultat... mais c'est plus compliqué puisque tu dois connaitre le protocol ftp (envoi et réception de données).  je pense qu'il y a des fonctions existante en php qui devrait te permettre de communiquer facilement avec le serveur mais j'y connais rien là :(
 
tu dois consulter les rfc sur le protocole ftp et regarder la doc sur www.php.net




 
non en fait des fois sur certains ftp, il y a un nombre maxi d'utilisateurs qui peuvent se connecter à la fois...--> dans quel cas le serveur retourne l'erreur 421 "Too many users, please try again later"
 
j'aurais aimé savoir si on pouvait faire ca facilement avec PHP --> je vais aller voir sur php.net.


Message édité par le_duc le 21-10-2002 à 15:25:25
Reply

Marsh Posté le 21-10-2002 à 15:20:55    

ça fait longtemps que j'ai plus down de ftp :D
Est-ce que tu dois te logguer pour avoir cette réponse ? si oui, chaque fois que qq va lancer ton script, il va occuper un user sur le serveur, ce qui fait que les résultats seront faussés et tu occuperas des users inutilement.


---------------
...oups kernel error...
Reply

Marsh Posté le 21-10-2002 à 15:26:47    

ben en fait je sais pas si on doit se logger pour le savoir...ce qui est sûr, c'est qu'en se loggant, il nous le dit...maintenant je sais pas si on peut le savoir sans se logger...  :pt1cable:  
 
merci quand même! @++

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed