PHP에서 GethostbyName 은 매우 실용적인 기능으로 호스트 이름 (도메인 이름)을 통해 해당 IP 주소를 얻는 데 사용됩니다. 이 기능은 특히 도메인 이름 해상도를 수행 할 때 네트워크 프로그래밍, DNS 쿼리 등과 같은 시나리오에 종종 사용됩니다.
gethostbyName 의 기본 사용은 도메인 이름을 함수로 전달하고 도메인 이름의 IP 주소를 반환하는 것입니다. 도메인 이름을 해결할 수 없거나 문제가있는 경우 함수는 원래 도메인 이름 문자열을 반환합니다.
문법:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">gethostbyname</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$hostname</span></span><span> )
</span></span>$ hostname : 호스트 이름은 구문 분석 할 호스트 이름, 일반적으로 www.example.com 과 같은 전체 도메인 이름입니다.
반품 값 :
이 함수는 해당 호스트 이름의 IP 주소를 나타내는 문자열을 반환합니다. 구문 분석이 실패하면 들어오는 호스트 이름이 반환됩니다.
몇 가지 간단한 예를 통해 gethostbyname 의 실제 적용을 이해해 봅시다.
예 1 : 기본 사용
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$hostname</span></span><span> = </span><span><span class="hljs-string">"www.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gethostbyname</span></span><span>(</span><span><span class="hljs-variable">$hostname</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The IP address of <span class="hljs-subst">$hostname</span></span></span><span> is: </span><span><span class="hljs-subst">$ip</span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span><span class="hljs-attribute">The</span></span><span> IP address of www.example.com is: </span><span><span class="hljs-number">93.184.216.34</span></span><span>
</span></span>이 예에서는 www.example.com 을 통과하고 GethostbyName은 도메인 이름 93.184.216.34 에 해당하는 IP 주소를 반환합니다.
예 2 : 구문 분석 실패의 상황
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$hostname</span></span><span> = </span><span><span class="hljs-string">"nonexistentdomain.xyz"</span></span><span>;
</span><span><span class="hljs-variable">$ip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gethostbyname</span></span><span>(</span><span><span class="hljs-variable">$hostname</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The IP address of <span class="hljs-subst">$hostname</span></span></span><span> is: </span><span><span class="hljs-subst">$ip</span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span>The IP address of nonexistentdomain.xyz </span><span><span class="hljs-keyword">is</span></span><span>: nonexistentdomain.xyz
</span></span>도메인 이름을 해결할 수없는 경우 gethostbyname은 들어오는 호스트 이름을 직접 반환합니다. 이 경우, 존재하지 않는 도메인 .xyz는 해결할 수 없으므로 출력은 여전히 원래 도메인 이름입니다.
IPv4 주소 : GethostbyName은 IPv4 주소 만 반환합니다. IPv6 주소를 가져와야하는 경우 getAddrinfo 와 같은 다른 방법을 사용해야합니다.
캐싱 메커니즘 : GethostbyName은 시스템의 DNS 캐시에 따라 다를 수 있습니다. 따라서 여러 요청이 동일한 도메인 이름을 해결하면 매번 라이브 쿼리 대신 캐시 된 결과를 반환 할 수 있습니다.
성능 고려 사항 : 단기간에 도메인 이름을 자주 해결 해야하는 경우 캐싱 메커니즘을 사용하여 DNS 쿼리 수를 줄이고 성능을 향상시켜야하는지 고려하십시오.
오류 처리 : gethostbyName은 경우에 따라 오류 메시지를 반환 할 수 있지만 (예 : 원본 호스트 이름을 반환) 오류 코드 또는 더 많은 오류 메시지를 제공하지 않습니다. 보다 자세한 오류 처리가 필요한 경우 gethostbyaddr 또는 checkdnsrr 와 같은 다른 기능을 결합 할 수 있습니다.
DNS 쿼리 도구 : gethostbyName을 사용하여 간단한 DNS 쿼리 도구를 작성할 수 있습니다.
네트워크 디버깅 : 네트워크 연결을 디버깅하거나 도메인 이름을 해결할 때 GethostbyName은 도메인 이름이 정상적으로 해결되는지 여부를 결정하는 데 도움이 될 수 있습니다.
자동 배포 : 일부 자동화 스크립트에서 GethostbyName은 대상 서버가 온라인 상태인지 확인하는 데 도움이 될 수 있습니다.
도메인 이름 해상도에 대한 요구 사항이 높은 경우 다음 PHP 기능과 함께 사용할 수 있습니다.
gethostbyaddr () : IP 주소를 기반으로 호스트 이름을 반대로 쿼리합니다.
CheckDnsrr () : 도메인 이름의 DNS 레코드가 있는지 확인하십시오.
dns_get_record () : 더 많은 정보를 얻으려면 도메인 이름의 모든 DNS 레코드를 가져옵니다.
GethostbyName은 호스트 이름을 통해 IP 주소를 얻는 간단하지만 매우 효과적인 도구입니다. 간단한 도메인 이름 해상도 작업에 적합하며 사용하기 쉽습니다. 기본 사용 및 제한 사항을 이해함으로써 개발자는 네트워크 관련 프로그래밍 문제를보다 효율적으로 해결할 수 있습니다.