gethostbyname : à oublier, préférez dig

gethostbyname sert à récupérer l’adresse IP d’un nom de domaine.
L’intention est bonne, et la fonction suffit pour quelques interrogations.
Mais si vous avez besoin de récupérer l’IP de plusieurs milliers de noms de domaines, oubliez tout de suite, préférez dig !

function gethost_fast($host) {
 // on lance dig, en demandant les champs A (ip) et on récupère la dernière valeur
 $ip = rtrim("/usr/bin/dig $host A +short | /usr/bin/tail -1");

// en cas de probleme
 if(
  (function_exists('filter_var') && !filter_var($ip,FILTER_VALIDATE_IP)) // filter_var = PHP > 5.2.0
  || !preg_match('#\d+(?:\.\d+){3}#i',$ip)) {
  $ip = @gethostbyname($host);
  }
 return $ip;
 }

Comptez 1 seconde pour environ 200 ndds avec dig … contre 100-200 secondes pour gethostbyname…

Laisser un commentaire