PHP에서는 종종 도메인 이름을 기반으로 해당 IPv4 주소를 얻어야합니다. 이는 네트워크 요청에 대한 웹 사이트의 IP 주소를 얻거나 서버에서 도메인 이름 해상도 및 액세스 제어를 수행하는 등 많은 응용 프로그램 시나리오에 대한 매우 일반적인 요구 사항입니다. PHP는 매우 편리한 기능 인 Gethostbynamel () 을 제공하며 도메인 이름에 해당하는 모든 IPv4 주소를 빠르게 반환 할 수 있습니다.
이 기사는 GethostbyNamel () 함수를 사용하여 지정된 도메인 이름의 IPv4 주소를 얻고 실제 사례와 함께 보여주는 방법을 소개합니다.
gethostbynamel () 은 PHP의 내장 기능으로 도메인 이름을 매개 변수로 취하고 도메인 이름의 모든 IPv4 주소를 포함하는 배열을 반환합니다. 이 기능은 DNS 쿼리를 사용하여 도메인 이름을 해결하고 레코드를 통해 해당 IPv4 주소를 반환합니다. 이 함수는 배열을 반환하고 각 요소는 IPv4 주소입니다.
array gethostbynamel ( string $hostname )
$ hostname : 구문 분석 해야하는 도메인 이름입니다.
반환 값 : 성공하면 IPv4 주소가 포함 된 배열을 반환하십시오. 실패하면 false를 반환하십시오.
도메인 이름 gitbox.net 의 모든 IPv4 주소를 얻어야한다고 가정하십시오. 다음 코드를 사용하여 구현할 수 있습니다.
<?php
$domain = "gitbox.net"; // 도메인 이름
// 사용 gethostbynamel 모든 것을 얻으십시오 IPv4 주소
$ipv4Addresses = gethostbynamel($domain);
// 判断是否成功获取到주소
if ($ipv4Addresses !== false) {
echo "도메인 이름 {$domain} ~의 IPv4 주소有:\n";
foreach ($ipv4Addresses as $address) {
echo $address . "\n";
}
} else {
echo "无法解析도메인 이름 {$domain} ~의 IPv4 주소。\n";
}
?>
도메인 이름 gitbox.net ~의 IPv4 주소有:
192.168.1.1
192.168.1.2
PHP에서는 GethostbyName () 함수를 사용하여 단일 IPv4 주소를 얻을 수 있습니다. 그러나 도메인 이름에 여러 IPv4 주소가있는 경우 (예 : 다중 A 레코드가 DNS 구성에 설정된 경우) GethostbyName () 중 하나만 반환 할 수 있습니다. 대조적으로, gethostbynamel () 함수는 도메인 이름과 관련된 모든 IPv4 주소를 반환하므로 모든 주소를 얻어야하는 시나리오에 더 적합합니다.
예를 들어 GethostbyName ()을 사용하는 코드는 다음과 같습니다.
<?php
$domain = "gitbox.net";
$ipv4Address = gethostbyname($domain);
echo "도메인 이름 {$domain} ~의 IPv4 주소是:{$ipv4Address}\n";
?>
도메인 이름에 여러 A 레코드가있는 경우 위의 코드는 주소 중 하나만 리턴하고 GethostbyNamel ()은 모든 IPv4 주소를 얻도록합니다.
DNS 캐싱 문제 : PHP의 DNS 쿼리 결과 결과가 캐시되므로 동일한 도메인 이름을 여러 번 요청할 때 반환 된 결과는 캐시에서 나올 수 있습니다. PHP 서비스를 다시 시작하거나 DNS 새로 고침 정책을 사용하여 최신 해상도 결과를 얻을 수 있습니다.
IPv6 지원 : gethostbynamel ()은 IPv4 주소 만 반환합니다. 도메인 이름의 IPv6 주소를 가져와야하는 경우 getAddrinfo () 함수를 사용하거나 gethostbyname6 () 및 기타 함수를 사용하여 구현할 수 있습니다.
오류 처리 : gethostbynamel () 함수가 도메인 이름을 해결할 수 없으면 False를 반환합니다. 따라서 실제 응용 프로그램에서 예상치 못한 오류를 피하려면 적절한 오류 처리가 필요합니다.
성능 고려 사항 : DNS 쿼리는 네트워크 작업이며 비교적 느립니다. 동일한 도메인 이름을 자주 해결 해야하는 경우 DNS 쿼리를 중복하지 않도록 캐시 캐시 결과를 고려할 수 있습니다.
Gethostbynamel ()은 개발자가 도메인 이름의 모든 IPv4 주소를 쉽게 얻을 수 있도록 매우 편리하고 실용적인 기능입니다. 여러 IP 주소를 가져와야하는 경우이 기능을 사용하면 기존 GethostbyName () 보다 효율적이고 정확합니다. 사용 방법과 주목할 내용을 이해함으로써 개발자는 실제 프로젝트에서이를 더 잘 활용하여 도메인 이름 해상도 관련 기능을 구현할 수 있습니다.