首頁  >  文章  >  後端開發  >  如何在 PHP 中 Ping 遠端伺服器連接埠?

如何在 PHP 中 Ping 遠端伺服器連接埠?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-18 12:09:31687瀏覽

How to Ping a Remote Server Port in PHP?

使用 PHP Ping 伺服器連接埠

取得遠端伺服器的連線狀態是網路管理和測試的一個重要面向。 PHP 提供了一種使用 fsockopen() 函數 ping IP 位址和連接埠的簡單方法。但是,問題中提到的現有腳本僅限於測試網站,而不是特定的 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 連線。如果在給定的逾時時間內建立了連接,則函數將傳回 ping 回應時間(以毫秒為單位);否則,它會傳回「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 的套接字函數,我們可以有效地ping IP地址和域名,以測試連接並識別無回應的主機。

以上是如何在 PHP 中 Ping 遠端伺服器連接埠?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn