2010-11-29 23 views
4

La fonction gethostbyname() de PHP ne semble pas configurable en ce qui concerne les délais d'attente. Je veux limiter les requêtes DNS à 1 seconde ou moins car cela montre un problème et devrait être ignoré.Obtenir l'adresse IP du DNS sans utiliser gethostbyname?

Alors, y a-t-il un moyen de faire une requête DNS en utilisant des sockets ou cURL à la place? J'ai été en mesure de faire des demandes SMTP en utilisant des flux PHP qui ont sauvé les ressources du serveur, donc je cherche à faire de même avec les requêtes DNS.

Répondre

4

Les commentaires sur le PHP article ont des options de configuration/y compris un délai d'attente:

<?php 
function getAddrByHost($host, $timeout = 3) { 
    $query = `nslookup -timeout=$timeout -retry=1 $host`; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
    return $host; 
} 
?> 

http://www.php.net/manual/en/function.gethostbyname.php#92870

+2

@Xeoncross: Ceci est probablement votre meilleur pari. Sinon, vous pouvez regarder la section '4.2' de la RFC (http://www.faqs.org/rfcs/rfc1035.html) et savoir comment envoyer votre propre paquet. –

+1

Notez que le [backtick '] (http://php.net/operators.execution) est un raccourci pour [shell_exec()] (http://php.net/shell-exec) – mikeytown2