Fsockopen tester un port d'un serveur distant

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 : Fsockopen tester un port d'un serveur distant

par Hywan » 08 janv. 2009, 14:06

Hey :),

Personnellement, j'irais un œil dans les flux de PHP qui vont prendre le dessus sur toutes les fonctions bâtardes comme celles des sockets que tu utilises. Ce module est très intéressant et il est à étudier avec soin si on veut que nos applications soient pérennes.

par crash » 08 janv. 2009, 14:02

Bonjour,

Merci beaucoup de vos réponses :)

Donc j'ai mis a 3 au timeout et j'ai toujours le même problème.

Néanmoins, merci jules j'ai mis un @ devant la fonction fsockopen pour cacher l'erreur.

Par contre si c'est offline la page est longue à charger, c'est ça qui est embêtant.

Il n'existe aucune autre solution à part celle-ci ?

Merci encore.

par jules » 08 janv. 2009, 00:15

en fait s'il est offline il mettra un temps (infini) à repondre.
quand tu ping un serveur (ou une ip ds ton cas) tu ne peux pas attendre un réponse immédiate vu que ca passe par plusieurs noeuds. on définit alors -par convention- un timeout qui précise que si au bout de x secondes l'ip n'a pas répondu, c'est qu'elle est offline.
Tu peux réduire ton temps à 3 secondes par exemple, mais tu risque de voir apparaitre offline si le réseau lag un peu

par chrislabricole » 08 janv. 2009, 00:15

Salut,

Il faut ajouter un @ juste devant ta fonction fsockopen().
Ceci sert à masquer l'erreur renvoyée par PHP en cas d'échec, pour afficher la tienne (le Offline) :)

Sinon, je pense que tu peux te permettre de réduire ton temps de timeout ;)

Fsockopen tester un port d'un serveur distant

par crash » 07 janv. 2009, 21:59

Bonjour,

Je ne sais pas si mon titre correspond bien avec mon problème.

Voici le code que j'utilise :
<?php
function verif()
{
$fp = fsockopen("monip", monport, $errno, $errstr, 30);
if (!$fp)
{
echo "<font color = 'red'><b>OFFLINE</b></font><br>";
}
else
{
echo "<font color = 'green'><b>ONLINE</b></font><br>";
}
}
?>
En fait, ça test bien si le port est en écoute ou non aucun problème de ce côté là.

Par contre si le cas contraire intervient qu'il n'écoute plus, alors la page met X temps à se charger pour dire qu'il est offline.

j'ai essayé de modifier le timeout à 0 ou 1 et après j'obtiens une erreur :

Code : Tout sélectionner

Warning: fsockopen() [function.fsockopen]: unable to connect .... (Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. ) ...
J'aimerais savoir s'il y avait une solution pour éviter ce temps d'attente de 30 secondes, que ça dise directement si il est offline.

J'espère avoir été assez clair, et je vous remercie d'avance.

Cordialement.