>  기사  >  백엔드 개발  >  PHP에서 원격 서버 포트를 ping하는 방법은 무엇입니까?

PHP에서 원격 서버 포트를 ping하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-18 12:09:31688검색

How to Ping a Remote Server Port in PHP?

PHP로 서버 포트 핑

원격 서버의 연결 상태를 확인하는 것은 네트워크 관리 및 테스트의 중요한 측면입니다. PHP는 fsockopen() 함수를 사용하여 IP 주소와 포트를 ping하는 간단한 방법을 제공합니다. 그러나 질문에 언급된 기존 스크립트는 특정 IP:포트 조합이 아닌 웹사이트 테스트에만 국한됩니다.

이러한 요구를 해결하기 위해 TCP 연결 설정 메커니즘을 활용할 수 있습니다. 주어진 IP 주소와 포트로 TCP 연결을 시도함으로써 서버의 가용성을 추론할 수 있습니다. 아래 코드는 이 기능을 요약합니다.

<code class="php"><?php

function ping($host, $port, $timeout) 
{ 
  $tB = microtime(true); 
  $fP = fsockopen($host, $port, $errno, $errstr, $timeout); 
  if (!$fP) { return "down"; } 
  $tA = microtime(true); 
  return round((($tA - $tB) * 1000), 0)." ms"; 
}

// Usage example: ping a server at IP address 127.0.0.1, port 80
echo ping("127.0.0.1", 80, 10);

?></code>

이 코드 조각은 서버가 지정된 포트에서 TCP 연결을 수락하는지 여부를 결정합니다. 지정된 제한 시간 내에 연결이 설정되면 함수는 핑 응답 시간을 밀리초 단위로 반환합니다. 그렇지 않으면 "down"을 반환하여 서버에 연결할 수 없음을 나타냅니다.

응답을 더욱 구체화하려면 허용된 답변에 제공된 pingDomain() 함수를 사용할 수 있습니다.

<code class="php"><?php

function pingDomain($domain){
    $starttime = microtime(true);
    $file      = fsockopen ($domain, 80, $errno, $errstr, 10);
    $stoptime  = microtime(true);
    $status    = 0;

    if (!$file) $status = -1;  // Site is down
    else {
        fclose($file);
        $status = ($stoptime - $starttime) * 1000;
        $status = floor($status);
    }
    return $status;
}

// Usage example: ping a server at domain name example.com
echo pingDomain("example.com");

?></code>

PHP의 소켓 기능을 활용하면 IP 주소와 도메인 이름 모두를 효과적으로 ping하여 연결을 테스트하고 응답하지 않는 호스트를 식별할 수 있습니다.

위 내용은 PHP에서 원격 서버 포트를 ping하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.