gethostbynamel

関数の概要

PHPの gethostbynamel 関数は、指定したホスト名から関連するIPアドレスの一覧を配列として取得するための関数です。複数のIPアドレスが割り当てられているドメインに対して、一括でIPアドレスを取得したい場合に便利です。DNSの名前解決を行い、返されるIPアドレスはIPv4形式の文字列の配列となります。

パラメータの説明

  • hostname(文字列): IPアドレスを取得したいホスト名(例: “example.com”)を指定します。

戻り値

成功した場合は、指定したホスト名に関連付けられているIPv4アドレスの配列を返します。ホスト名が解決できなかった場合やエラーが発生した場合は FALSE を返します。

使用例

基本的な使い方

<?php
$ips = gethostbynamel("example.com");
if ($ips !== false) {
    print_r($ips);
} else {
    echo "ホスト名の解決に失敗しました。";
}
?>

ここでは、”example.com” のIPアドレス一覧を取得して配列で表示しています。複数のIPがある場合は全て表示されます。

取得したIPアドレスをループで表示する

<?php
$hosts = "www.google.com";
$ipList = gethostbynamel($hosts);

if ($ipList !== false) {
    foreach ($ipList as $ip) {
        echo "IPアドレス: " . $ip . "<br>";
    }
} else {
    echo "IPアドレスの取得に失敗しました。";
}
?>

取得した複数のIPアドレスを1つずつ画面に表示しています。可読性の高い形で一覧を提示したいときに有用です。

特定のホストが複数IPを持つか確認する

<?php
$host = "example.net";
$ips = gethostbynamel($host);

if ($ips !== false) {
    if (count($ips) > 1) {
        echo $host . " は複数のIPアドレスを持っています。";
    } else {
        echo $host . " は1つだけのIPアドレスです。";
    }
} else {
    echo "ホスト名の解決ができません。";
}
?>

この例では、取得したIPアドレス数に応じて、「複数のIPを持つかどうか」を判定しています。負荷分散などで複数のIPを使っているか確認したい場合に役立ちます。

関連する関数

  • gethostbyname – ホスト名から単一のIPアドレス(文字列)を取得します。
  • dns_get_record – DNSレコード全体を取得でき、AレコードやAAAAレコードなど詳細な情報を得られます。
  • gethostbyaddr – IPアドレスからホスト名を取得します。

まとめ

gethostbynamel は、複数のIPアドレスを持つホストのIP一覧を簡単に取得できる便利な関数です。特に負荷分散や冗長構成のネットワーク情報を扱う際に役立ちます。ホスト名が正しく解決されない場合は FALSE が返るため、エラーハンドリングも忘れずに行いましょう。また、複数IPを扱う場面では、この関数を活用することで作業効率が向上します。