関数の概要
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を扱う場面では、この関数を活用することで作業効率が向上します。
