Maison > développement back-end > tutoriel php > Comment envoyer un ping à un port de serveur distant en PHP ?

Comment envoyer un ping à un port de serveur distant en PHP ?

Mary-Kate Olsen
Libérer: 2024-10-18 12:09:31
original
712 Les gens l'ont consulté

How to Ping a Remote Server Port in PHP?

Pinger un port de serveur avec PHP

Obtenir l'état de connectivité d'un serveur distant est un aspect crucial de la gestion et des tests du réseau. PHP fournit un moyen simple de cingler une adresse IP et un port à l'aide de la fonction fsockopen(). Cependant, le script existant mentionné dans la question se limite au test de sites Web, et non à des combinaisons IP:port spécifiques.

Pour répondre à ce besoin, nous pouvons exploiter le mécanisme d'établissement de connexion TCP. En essayant d'établir une connexion TCP avec une adresse IP et un port donnés, nous pouvons déduire la disponibilité du serveur. Le code ci-dessous encapsule cette fonctionnalité :

<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>
Copier après la connexion

Cet extrait de code détermine si un serveur accepte les connexions TCP sur le port spécifié. Si une connexion est établie dans le délai imparti, la fonction renvoie le temps de réponse ping en millisecondes ; sinon, il renvoie "down" pour indiquer que le serveur est inaccessible.

Pour affiner davantage la réponse, vous pouvez utiliser la fonction pingDomain() fournie dans la réponse acceptée :

<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>
Copier après la connexion

En tirant parti des fonctions de socket de PHP, nous pouvons efficacement envoyer une requête ping aux adresses IP et aux noms de domaine pour tester la connectivité et identifier les hôtes qui ne répondent pas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal