現在の位置: ホーム> 最新記事一覧> GethostbynameとGethostbynameの違い

GethostbynameとGethostbynameの違い

gitbox 2025-05-26

1。関数の定義と関数

gethostbyname(string $ hostname):string

この関数の関数は、ホスト名を解決することです。

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

ホスト名を正常に解析できる場合、文字列の形でIPv4アドレスを返します(たとえば、 192.168.1.1 )。解析が失敗した場合、元のホスト名文字列が返されます。

Gethostbynamel(String $ hostname):配列| false

上記の関数とは異なり、 gethostbynamel()は、ホスト名に対応するすべてのIPv4アドレスの配列を返します。

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

ホスト名を解決できない場合、 falseが返されます。成功した場合、マルチネットワークカードホスト、ロードバランシングサービス、その他のシナリオなど、複数のIPアドレスが返される場合があります。


2。主な違い

側面gethostbyname Gethostbynamel
戻り値タイプ配列またはfalse
複数のIPがサポートされているかどうかいいえ、1つだけ(最初のもの)はい、利用可能なすべてのIPv4アドレスを返します
IPv6サポートいいえいいえ
失敗のリターン元のホスト名文字列間違い
推奨使用簡単なチェックまたはロギングすべてのレコード、ロードバランシング分析などを取得します。

3。実際の使用シナリオの分析

  1. ウェブサイトの監視または健康チェック<br> ドメイン名を正常に解析できるかどうかを検出したい場合は、 gethostbyname()を使用できます。

     $ip = gethostbyname('gitbox.net');
    if ($ip === 'gitbox.net') {
        echo "DNS 分析に失敗しました";
    } else {
        echo "DNS 成功した分析,IP: $ip";
    }
    
  2. サーバーMulti-IPバインディングまたは分散処理<br> ドメイン名のすべてのIPアドレスを取得する必要がある場合、たとえばCDN、ロードバランシング、またはマスタースレーブ環境では、 gethostbynamel()を使用できます。

     $ips = gethostbynamel('gitbox.net');
    if ($ips === false) {
        echo "取得できません IP アドレスリスト";
    } else {
        foreach ($ips as $ip) {
            echo "発見する IP:$ip\n";
        }
    }
    

4。注意すべきこと

  • どちらの関数もIPv6をサポートしていません。 IPv6をサポートする必要がある場合は、 dns_get_record()を使用し、タイプAAAAを指定します。

  • gethostbyname()は、解析結果の最初のIPのみを返し、ドメイン名全体のアクセス機能を表すことはできません。

  • これらの関数は、サーバーのDNS構成に依存し、DNSタイムアウトまたは解像度の障害が結果に影響します。

  • これらの2つの関数は、PHPドキュメントで非推奨としてマークされています。代わりに、より柔軟なdns_get_record()を徐々に使用することをお勧めします。