Petite question sur gethostbyname

  • Auteur de la discussion Auteur de la discussion Zecat
  • Date de début Date de début
WRInaute accro
J'ai remarqué que l'execution de la commande :

gethosbyname ($url)

est quelque fois très longue (1 à 2 s) et d'autres fois ultra rapide (0,00n s) ...

Question : si on mesure avec microtime le temps de reponse de cette commande, on mesure quoi ?

1 - La vitesse du site interrogé
2 - La vitesse du serveur sur lequel est le site ?
3 - autre chose ...

Idem pour la commande filegetcontent ... dont le temps d'execution ne semble pas lié à la taille (ou très peu).

Bon dans les deux cas je pense que c'est l'option 2 mais plusieurs avis etc etc
 
WRInaute passionné
ça dépends de la vitesse de réponse des DNS en face (et des tiens) mais si les DNS en face sont mort, tu auras un timeout.
Personnellement je fais :
soit j'en affiche jamais plus d'un seul
Soit je mets par défaut les IPs avec une "option" pour afficher les hostname.

Tu auras beaucoup ce problème avec des IPs de "scanneurs" qui sont situés dans des pays "exotiques" ;)
 
WRInaute impliqué
Idem pour la commande filegetcontent ... dont le temps d'execution ne semble pas lié à la taille (ou très peu).
Euh, filegetcontents récupère l'intégralité du lien et le place dans une variable.


est quelque fois très longue (1 à 2 s) et d'autres fois ultra rapide (0,00n s) ...
Je ne suis pas sûr du tout à ce sujet.
Cela dépend du serveur il me semble. Est-ce qu'il connait le DNS en question ?
 
WRInaute accro
gethostbyname ça fait une résolution DNS. Si c'est très rapide, c'est que c'est en cache pas loin de chez toi. Si c'est plus lent, c'est que ce n'est pas en cache. Mais pour que ça prenne 1 à 2 secondes, il faut généralement qu'il y ait un problème quelque part, un lookup pour www.xxx.yyy ça fait normalement 2 requêtes qui prennent quelques dizaines/centaines de ms chacune (yyy va déjà être en cache, donc une requête pour récupérer les NS de xxx.yyy auprès des NS de yyy, normalement il y en a toujours un pas loin, donc quelques dizaines de ms max, et une autre pour récupérer www.xxx.yyy, là ça dépend d'où sont les NS, mais 500 ms ça me paraît le maximum s'il n'y a pas de problème particulier).

file_get_contents ça fait:
- une résolution DNS
- une requête http

Le temps d'éxécution d'une requête http est liée à plusieurs paramètres:
- le temps d'établir la connexion TCP
- le temps pour le serveur de commencer à traiter la requête
- le temps pour le serveur de (commencer à) préparer la réponse
- le temps pour que les données te soient transmises

Le premier est lié à la latence entre client et serveur, le deuxième à la charge du serveur, le troisième à la complexité de la requête et la charge du serveur, le quatrième au volume de données, au débit disponible sur le chemin, à la latence entre les deux extrémités, et à certains paramètres de configuration de part et d'autre.

Bref, tu peux avoir une requête pour un fichier de 1 Ko qui va prendre un temps interminable (si par exemple il y a une grosse requête SQL super lente pour générer le résultat) et un fichier de 1 Mo qui va être balancé quasiment instantanément (si c'est un fichier statique, sur un serveur pas loin de chez toi et pas chargé, et qu'il y a un débit élevé disponible entre les deux serveurs).

Jacques.
 
WRInaute accro
merci jacque. ca explique bien les différence de temps constatée avec effectivement 1mo qui arrivent vite et 2 k qui peuvent se trainer.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut