이 기능의 기능은 호스트 이름을 해결하는 것입니다.
$ip = gethostbyname('gitbox.net');
echo $ip;
호스트 이름을 성공적으로 구문 분석 할 수있는 경우 문자열 형식으로 IPv4 주소를 반환합니다 (예 : 192.168.1.1 ). 구문 분석이 실패하면 원래 호스트 이름 문자열이 반환됩니다.
위의 함수와 달리 Gethostbynamel ()은 호스트 이름에 해당하는 모든 IPv4 주소의 배열을 반환합니다.
$ips = gethostbynamel('gitbox.net');
print_r($ips);
호스트 이름을 해결할 수 없으면 False가 반환됩니다. 성공하면 멀티 네트워크 카드 호스트,로드 밸런싱 서비스 및 기타 시나리오와 같은 여러 IP 주소를 반환 할 수 있습니다.
측면 | gethostbyname | gethostbynamel |
---|---|---|
반환 값 유형 | 끈 | 배열 또는 거짓 |
여러 IP가 지원되는지 여부 | 아니요, 단 하나 (첫 번째) | 예, 사용 가능한 모든 IPv4 주소를 반환합니다 |
IPv6 지원 | 아니요 | 아니요 |
실패에 대한 반환 | 원본 호스트 이름 문자열 | 거짓 |
권장 사용 | 간단한 점검 또는 로깅 | 모든 레코드,로드 밸런싱 분석 등을 얻으십시오. |
웹 사이트 모니터링 또는 건강 점검 <br> 도메인 이름을 정상적으로 구문 분석 할 수 있는지 여부를 감지하려면 gethostbyName ()을 사용할 수 있습니다.
$ip = gethostbyname('gitbox.net');
if ($ip === 'gitbox.net') {
echo "DNS 분석이 실패했습니다";
} else {
echo "DNS 성공적인 분석,IP: $ip";
}
서버 멀티 -IP 바인딩 또는 분산 처리 <br> 예를 들어 CDN,로드 밸런싱 또는 마스터 슬레이브 환경에서 도메인 이름의 모든 IP 주소를 얻어야하는 경우 gethostbynamel ()을 사용할 수 있습니다.
$ips = gethostbynamel('gitbox.net');
if ($ips === false) {
echo "얻을 수 없습니다 IP 주소 목록";
} else {
foreach ($ips as $ip) {
echo "발견하다 IP:$ip\n";
}
}
어느 기능도 IPv6을 지원합니다 . IPv6을 지원 해야하는 경우 DNS_GET_RECORD ()를 사용하고 AAAA 유형을 지정하십시오.
GethostbyName ()은 구문 분석 결과에서 첫 번째 IP 만 리턴하며 전체 도메인 이름의 액세스 기능을 나타낼 수 없습니다.
이러한 기능은 서버의 DNS 구성에 따라 다르며 DNS 타임 아웃 또는 해상도 실패는 결과에 영향을 미칩니다.
이 두 기능은 PHP 문서에서 더 이상 사용되지 않은 것으로 표시되었습니다. 대신 더 유연한 DNS_GET_RECORD ()를 점차적으로 사용하는 것이 좋습니다.