In PHP müssen wir häufig die entsprechende IPv4 -Adresse basierend auf dem Domänennamen erhalten. Dies ist eine sehr häufige Voraussetzung für viele Anwendungsszenarien, z. PHP bietet eine sehr bequeme Funktion - GetHostbynamel () , die alle IPv4 -Adressen, die einem Domänennamen entsprechen, schnell zurückgeben.
In diesem Artikel wird vorgestellt, wie die Funktion mit der GetHostbynamel () -Funktion verwendet wird, um die IPv4 -Adresse des angegebenen Domänennamens zu erhalten und in Kombination mit tatsächlichen Fällen zu demonstrieren.
GetHostbynamel () ist eine integrierte Funktion in PHP, die einen Domänennamen als Parameter nimmt und ein Array zurückgibt, das alle IPv4-Adressen des Domänennamens enthält. Diese Funktion verwendet die DNS -Abfrage, um den Domänennamen zu beheben und die entsprechende IPv4 -Adresse über den A -Datensatz zurückzugeben. Es ist zu beachten, dass diese Funktion ein Array zurückgibt und jedes Element eine IPv4 -Adresse ist.
array gethostbynamel ( string $hostname )
$ hostname : Der Domain -Name, der analysiert werden muss.
Rückgabewert: Geben Sie bei Erfolg ein Array mit IPv4 -Adressen zurück. Wenn es fehlschlägt, geben Sie false zurück.
Angenommen, wir müssen alle IPv4 -Adressen des Domänennamens gitbox.net abrufen. Wir können den folgenden Code verwenden, um ihn zu implementieren:
<?php
$domain = "gitbox.net"; // Domain -Name
// verwenden gethostbynamel Holen Sie sich alles IPv4 Adresse
$ipv4Addresses = gethostbynamel($domain);
// 判断是否成功获取到Adresse
if ($ipv4Addresses !== false) {
echo "Domain -Name {$domain} von IPv4 Adresse有:\n";
foreach ($ipv4Addresses as $address) {
echo $address . "\n";
}
} else {
echo "无法解析Domain -Name {$domain} von IPv4 Adresse。\n";
}
?>
Domain -Name gitbox.net von IPv4 Adresse有:
192.168.1.1
192.168.1.2
In PHP können wir auch die Funktion von GetHostByName () verwenden, um eine einzelne IPv4 -Adresse zu erhalten. Wenn jedoch ein Domänenname mehrere IPv4 -Adressen aufweist (z. B. in der DNS -Konfiguration sind mehrere Datensätze festgelegt), kann GetHostByName () nur einen von ihnen zurückgeben. Im Gegensatz dazu gibt die Funktion von GetHostbynamel () alle IPv4 -Adressen zurück, die dem Domain -Namen zugeordnet sind, sodass sie besser für Szenarien geeignet ist, in denen alle Adressen erhalten werden müssen.
Beispielsweise lautet der Code mit GetHostByName () wie folgt:
<?php
$domain = "gitbox.net";
$ipv4Address = gethostbyname($domain);
echo "Domain -Name {$domain} von IPv4 Adresse是:{$ipv4Address}\n";
?>
Wenn der Domain -Name mehrere Datensätze enthält, gibt der obige Code nur eine der Adressen zurück, und Gethostbynamel () stellt sicher, dass Sie alle IPv4 -Adressen erhalten.
DNS -Caching -Problem : Die DNS -Abfrage von PHP Caches Ergebnisse. Wenn Sie also mehrmals denselben Domänennamen anfordern, können die zurückgegebenen Ergebnisse aus dem Cache stammen. Sie können sicherstellen, dass die neuesten Lösungsergebnisse durch Neustart des PHP -Dienstes oder die Verwendung der DNS -Aktualisierungsrichtlinie erzielt werden.
IPv6 -Unterstützung : GetHostbynamel () gibt nur IPv4 -Adressen zurück. Wenn Sie die IPv6 -Adresse des Domänennamens abrufen müssen, können Sie die Funktion getadDrinfo () verwenden oder GetHostByName6 () und andere Funktionen verwenden, um sie zu implementieren.
Fehlerbehandlung : Wenn die Funktion von GetHostbynamel () den Domänennamen nicht auflösen kann, gibt sie false zurück. Daher ist in tatsächlichen Anwendungen eine angemessene Fehlerbehandlung erforderlich, um unvorhergesehene Fehler zu vermeiden.
Leistungsüberlegungen : DNS -Abfragen sind Netzwerkoperationen und relativ langsam. Wenn Sie denselben Domänennamen häufig auflösen müssen, können Sie die Parsing -Ergebnisse in Betracht ziehen, um doppelte DNS -Abfragen zu vermeiden.
GetHostbynamel () ist eine sehr bequeme und praktische Funktion, mit der Entwickler alle IPv4 -Adressen von Domainnamen problemlos erhalten können. Wenn Sie mehrere IP -Adressen abrufen müssen, ist die Verwendung dieser Funktion effizienter und genauer als der herkömmliche GetHostByName () . Durch das Verständnis, wie man es benutzt und was zu beachten ist, können Entwickler es in tatsächlichen Projekten besser nutzen, um Funktionen für Domain-Namen zu implementieren.