Heim  >  Artikel  >  Backend-Entwicklung  >  Wie pinge ich einen Remote-Server-Port in PHP an?

Wie pinge ich einen Remote-Server-Port in PHP an?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-18 12:09:31601Durchsuche

How to Ping a Remote Server Port in PHP?

Anpingen eines Server-Ports mit PHP

Das Ermitteln des Konnektivitätsstatus eines Remote-Servers ist ein entscheidender Aspekt der Netzwerkverwaltung und -prüfung. PHP bietet eine einfache Möglichkeit, eine IP-Adresse und einen Port mithilfe der Funktion fsockopen() anzupingen. Das in der Frage erwähnte vorhandene Skript beschränkt sich jedoch auf das Testen von Websites und nicht auf bestimmte IP-Port-Kombinationen.

Um diesem Bedarf gerecht zu werden, können wir den TCP-Verbindungsaufbaumechanismus nutzen. Durch den Versuch, eine TCP-Verbindung mit einer bestimmten IP-Adresse und einem bestimmten Port herzustellen, können wir auf die Verfügbarkeit des Servers schließen. Der folgende Code kapselt diese Funktionalität:

<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>

Dieses Codefragment bestimmt, ob ein Server TCP-Verbindungen am angegebenen Port akzeptiert. Wenn innerhalb des angegebenen Timeouts eine Verbindung hergestellt wird, gibt die Funktion die Ping-Antwortzeit in Millisekunden zurück; Andernfalls wird „down“ zurückgegeben, um anzuzeigen, dass der Server nicht erreichbar ist.

Um die Antwort weiter zu verfeinern, können Sie die Funktion pingDomain() verwenden, die in der akzeptierten Antwort bereitgestellt wird:

<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>

Durch die Nutzung der Socket-Funktionen von PHP können wir sowohl IP-Adressen als auch Domänennamen effektiv anpingen, um die Konnektivität zu testen und nicht reagierende Hosts zu identifizieren.

Das obige ist der detaillierte Inhalt vonWie pinge ich einen Remote-Server-Port in PHP an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn