PHP を使用してサーバー ポートに ping を送信する
リモート サーバーの接続ステータスを取得することは、ネットワーク管理とテストの重要な側面です。 PHP は、fsockopen() 関数を使用して IP アドレスとポートを ping する簡単な手段を提供します。ただし、質問で言及されている既存のスクリプトは、特定の IP とポートの組み合わせではなく、Web サイトのテストに限定されています。
このニーズに対処するには、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 のソケット機能を活用することで、IP アドレスとドメイン名の両方に効果的に ping を送信して、接続をテストし、応答しないホストを特定できます。
以上がPHP でリモートサーバーポートに ping を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。