현재 위치: > 최신 기사 목록> 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) : Array | false

위의 함수와 달리 Gethostbynamel ()은 호스트 이름에 해당하는 모든 IPv4 주소의 배열을 반환합니다.

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

호스트 이름을 해결할 수 없으면 False가 반환됩니다. 성공하면 멀티 네트워크 카드 호스트,로드 밸런싱 서비스 및 기타 시나리오와 같은 여러 IP 주소를 반환 할 수 있습니다.


2. 주요 차이점

측면 gethostbyname gethostbynamel
반환 값 유형 배열 또는 거짓
여러 IP가 지원되는지 여부 아니요, 단 하나 (첫 번째) 예, 사용 가능한 모든 IPv4 주소를 반환합니다
IPv6 지원 아니요 아니요
실패에 대한 반환 원본 호스트 이름 문자열 거짓
권장 사용 간단한 점검 또는 로깅 모든 레코드,로드 밸런싱 분석 등을 얻으십시오.

3. 실제 사용 시나리오 분석

  1. 웹 사이트 모니터링 또는 건강 점검 <br> 도메인 이름을 정상적으로 구문 분석 할 수 있는지 여부를 감지하려면 gethostbyName ()을 사용할 수 있습니다.

     $ip = gethostbyname('gitbox.net');
    if ($ip === 'gitbox.net') {
        echo "DNS 분석이 실패했습니다";
    } else {
        echo "DNS 성공적인 분석,IP: $ip";
    }
    
  2. 서버 멀티 -IP 바인딩 또는 분산 처리 <br> 예를 들어 CDN,로드 밸런싱 또는 마스터 슬레이브 환경에서 도메인 이름의 모든 IP 주소를 얻어야하는 경우 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 타임 아웃 또는 해상도 실패는 결과에 영향을 미칩니다.

  • 이 두 기능은 PHP 문서에서 더 이상 사용되지 않은 것으로 표시되었습니다. 대신 더 유연한 DNS_GET_RECORD ()를 점차적으로 사용하는 것이 좋습니다.