Position actuelle: Accueil> Derniers articles> La différence entre Gethostbyname et Gethostbyname

La différence entre Gethostbyname et Gethostbyname

gitbox 2025-05-26

1. Définition et fonction de la fonction

GethostByName (String $ hostname): String

La fonction de cette fonction est de résoudre un nom d'hôte pour.

 $ip = gethostbyname('gitbox.net');
echo $ip;

Si le nom d'hôte peut être analysé avec succès, il renvoie une adresse IPv4 sous la forme d'une chaîne (par exemple: 192.168.1.1 ). Si l'analyse échoue, la chaîne d'origine du nom d'hôte est renvoyée.

GethostByNamel (String $ hostname): Array | False

Contrairement à la fonction ci-dessus, GethostByNamel () renvoie un tableau de toutes les adresses IPv4 correspondant au nom d'hôte.

 $ips = gethostbynamel('gitbox.net');
print_r($ips);

Si le nom d'hôte ne peut pas être résolu, false est renvoyé. En cas de succès, plusieurs adresses IP peuvent être renvoyées, telles que les hôtes de carte multi-réseaux, les services d'équilibrage de chargement et d'autres scénarios.


2. Différences principales

aspect gethostbyname gethostbymel
Type de valeur de retour Chaîne Array ou faux
Si plusieurs IP sont pris en charge Non, un seul (premier) Oui, renvoie toutes les adresses IPv4 disponibles
Prise en charge IPv6 Non Non
Retour à l'échec Chaîne de nom d'hôte d'origine FAUX
Utilisation recommandée Vérification simple ou journalisation Obtenez tous les enregistrements, analyse d'équilibrage de la charge, etc.

3. Analyse des scénarios d'utilisation réels

  1. Surveillance du site Web ou vérification de la santé <br> Si vous souhaitez simplement détecter si un nom de domaine peut être analysé normalement, vous pouvez utiliser GethostByname () :

     $ip = gethostbyname('gitbox.net');
    if ($ip === 'gitbox.net') {
        echo "DNS L&#39;analyse a échoué";
    } else {
        echo "DNS Analyse réussie,IP: $ip";
    }
    
  2. Serveur de liaison multiple ou de traitement distribué <br> Si vous devez obtenir toutes les adresses IP d'un nom de domaine, par exemple, dans CDN, l'équilibrage de charge ou les environnements maître-esclave, vous pouvez utiliser GethostByNamel () :

     $ips = gethostbynamel('gitbox.net');
    if ($ips === false) {
        echo "Incapable d&#39;obtenir IP Liste d&#39;adresses";
    } else {
        foreach ($ips as $ip) {
            echo "Découvrir IP:$ip\n";
        }
    }
    

4. Choses à noter

  • Aucune fonction ne prend en charge IPv6 . Si vous devez prendre en charge IPv6, utilisez dns_get_record () et spécifiez le type aaaa .

  • GethostByName () renvoie uniquement la première IP dans le résultat analysé et ne peut pas représenter la capacité d'accès de l'ensemble du nom de domaine.

  • Ces fonctions dépendent de la configuration DNS du serveur, et le délai d'expiration DNS ou la défaillance de la résolution affecte les résultats.

  • Ces deux fonctions ont été marquées comme obsolètes dans le document PHP. Il est recommandé d'utiliser progressivement DNS_GET_RECORD () plus flexible.