PHP は IP:ポートの組み合わせに ping を実行できますか?
サーバーの可用性を確認しようとする場合、一般的なアプローチはサーバーに ping を実行することです。 IP アドレスと指定されたポート。ただし、Web サイトに ping するために設計されたスクリプトでは、この目的には十分ではない可能性があります。
解決策
PHP で IP:ポートの組み合わせを ping するには、fsockopen を利用できます。 () 関数。これを実現できる編集されたスクリプトは次のとおりです。
<code class="php">function ping($host, $port, $timeout) { $start = microtime(true); $socket = fsockopen($host, $port, $errno, $errstr, $timeout); if (!$socket) { return "down"; } $end = microtime(true); fclose($socket); return round((($end - $start) * 1000), 0)." ms"; }</code>
このスクリプトでは、fsockopen() を使用して接続を確立した後、開始タイムスタンプと終了タイムスタンプの差を使用して ping 時間が計算されます。接続が失敗した場合、関数は「down」を返します。
注: 提供された回答で指摘されているように、このスクリプトは TCP 接続でのみ機能します。他のプロトコルの場合は、カスタム パケットの生成と解析を含む、より高度なテクニックが必要になる場合があります。
以上がPHP は特定の IP とポートの組み合わせに ping を実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。