Tester si un serveur distant est bien up

Tester si un serveur distant est bien up - PHP - Programmation

Marsh Posté le 09-05-2007 à 13:34:31    

Bonjour,
 
Vu que j'ai quelques soucis avec mon serveur perso en ce moment, j'aimerais faire ceci :
 
Quand je vais sur moustik510.net, index.php teste si mon serveur perso est bien lancé.
OUI --> redirection vers mon serveur perso.
NON --> je reste sur le serveur hébergé pour afficher ... une page en construction.
 
Le but est de ne pas avoir le désagréable message d'un serveur injoignable.
 
1- Comment faire ça en PHP ?
Sur ce forum : http://www.presence-pc.com/forum/p [...] htm#t11010
il y a un test de présence d'un fichier distant qui peux m'aider mais c'est pas un test trop long ?
 
2- Je peux faire un truc du genre
http://moustik510.net va sur serveur hébergé --> test si serveur@home ok --> si oui redirection vers http://home.moustik510.net
http://home.moustik510.net va sur serveur@home
 
Mais ça pose deux problèmes :
- Si l'utilisateur fait http://moustik510.net/blog/ par exemple, il faut qu'il y aie le test et redirection vers http://home.moustik510.net/blog/
- Si l'utilisateur fait http://home.moustik510.net/* il saute le teste et le problème revient --> on tourne en rond.
 
Donc question est-ce possible d'afficher une page "en construction" si son serveur@home est inaccessible ?
 
Merci

Reply

Marsh Posté le 09-05-2007 à 13:34:31   

Reply

Marsh Posté le 09-05-2007 à 13:54:08    

http://fr.php.net/fsockopen
Tu tente d'ouvrire un socket avec ton serveur et s'il ne répond pas c'est qu'il est down. Quant au temps que ça prend, ça peut effectivement être un peu lent mais je vois pas tellement comment faire plus simple.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 09-05-2007 à 14:19:55    

dwogsi a écrit :

http://fr.php.net/fsockopen
Tu tente d'ouvrire un socket avec ton serveur et s'il ne répond pas c'est qu'il est down. Quant au temps que ça prend, ça peut effectivement être un peu lent mais je vois pas tellement comment faire plus simple.


Pour le temps d'attente, si c'est pas trop long (raisonnable) je peux faire un gif ou une anim flash "Contact du serveur".
 
Je crois que je vais poser maintenant la question dans Apache pour
 
1- http://.../fichier_bidon.html ou n'importe quel autre fichier dans n'importe quel répertoire lise le fichier index.php à la racine qui ferait :

Code :
  1. // Test si serveur OK
  2. //Serveur KO --> header("location: page_erreur.html" );
  3. //Serveur OK
  4. //Récupération de ce qu'il y a après "http://moustik510.net" dans l'url (exemple "/rep/bidon.php" )
  5. //Mettre avant "http://home.moustik510.net" (dans l'exemple : http://home.moustik510.net/rep/bidon.php)
  6. //Redirection vers le résultat trouvé


2- Dans la barre d'url ne pas afficher le "home." pour que l'utilisateur repasse par le serveur hébergé et pas directement sur le serveur perso.
 
Merci

Reply

Marsh Posté le 09-05-2007 à 14:51:29    

moustik510 a écrit :

Pour le temps d'attente

tu peux gérer le timeout avec fsockopen
 

moustik510 a écrit :

//Récupération de ce qu'il y a après "http://moustik510.net" dans l'url (exemple "/rep/bidon.php" )

avec $_SERVER['REQUEST_URI'] par exemple

Reply

Marsh Posté le 09-05-2007 à 15:13:02    

Ok merci à vous deux.
 
Mon dernier problème est le point 1 du process suivant :
 
Si je fais http://moustik510.net/rep/bidon.php
 
Il se passe ceci :
 
1 Exécution de http://moustik510.net/index.php [serveur hébergé]
2 Test si serveur ok (grace à fsockopen sur http://home.moustik510.net/index.php)
3 Serveur KO --> affichage beau message erreur !
4 Serveur OK --> header("location: http://home.moustik510.net/rep/bidon.php)
 
Mais ça c'est de la config apache (via .htaccess ?) donc j'ai posté ici :
http://forum.hardware.fr/hfr/OSAlt [...] 3157_1.htm
 
Ca avance ... merci !  :hello:

Reply

Marsh Posté le 29-06-2007 à 12:07:53    

[Suite et fin] Finalement le tout est hébergé chez 1&1.

Reply

Sujets relatifs:

Leave a Replay

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