Comment effectuer des tests de ping sur des serveurs globaux à l’aide de PHP ?
J’ai récemment envisagé d’acheter mon troisième serveur VPS et la vitesse du ping est l’une des préoccupations. J’ai un ping relativement élevé (environ 250 ms) du Royaume-Uni vers le serveur situé à Singapour, ce qui rend la saisie de commandes dans la console SSH un peu désagréable.
Heureusement, certains fournisseurs de VPS, par exemple Vultr, fournissent des adresses IP pour ses 15 emplacements, vous pouvez donc tester la vitesse du ping. Comment faire cela automatiquement sans taper la commande ping à chaque fois ?
emplacements des serveurs vultr dans le monde
Vous pouvez trouver un exemple de script PHP pour le faire :
<?php
// <a class="vglnk" target="_blank" href="https://helloacm.com/how-to-make-ping-tests-to-global-servers-using-php/" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/</span><span>how</span><span>-</span><span>to</span><span>-</span><span>make</span><span>-</span><span>ping</span><span>-</span><span>tests</span><span>-</span><span>to</span><span>-</span><span>global</span><span>-</span><span>servers</span><span>-</span><span>using</span><span>-</span><span>php</span><span>/</span></a>
// server name and their IP
$server = array(
"Frankfurt DE" => "108.61.210.117",
"Amsterdam, NL" => "108.61.198.102",
"Paris, France" => "108.61.209.127",
"London, UK" => "108.61.196.101",
"Tokyo, Japan" => "108.61.201.151",
"Singapore" => "45.32.100.168",
"New York (NJ)" => "108.61.149.182",
"Chicago, Illinois" => "107.191.51.12",
"Seattle, Washington" => "108.61.194.105",
"Atlanta, Georgia" => "108.61.193.166",
"Silicon Valley, California" => "104.156.230.107",
"Dallas, Texas" => "108.61.224.175",
"Miami, Florida" => "104.156.244.232",
"Los Angeles, California" => "108.61.219.200",
"Sydney, Australia" => "108.61.212.117"
);
// store sorted results
$result = array();
foreach ($server as $name => $ip) {
// exec runs the command and capture the last line of output
$output = exec("ping -c 3 $ip");
if (preg_match("/rtt min/avg/max/mdev = ([0-9]+.[0-9]+)/([0-9]+.[0-9]+)/([0-9]+.[0-9]+)(.*)/", $output, $match)) {
// calculate the ping as the average of three ms in last line
$ping = ((float)$match[1] + (float)$match[2] + (float)$match[3]) / 3;
$result[$name] = $ping;
}
}
// sorted from the smallest ping to highest
asort($result);
foreach ($result as $name => $ping) {
echo "$name - $ping msn";
}
L’essence de ce script PHP pratique est d’utiliser la fonction exec, qui exécute la commande externe ping et renvoie la dernière ligne de sa sortie.
root@happyukgo:/var/www/vultr$ ping -c 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.038/0.039/0.041/0.005 ms
Ensuite, en fonction de la chaîne de sortie, nous utilisons le testeur de regex preg_match et faisons la moyenne de ces 3 pings. Enfin, nous trions le tableau par valeurs. Ci-dessous, les tests de vitesse du Royaume-Uni, des États-Unis et de Singapour vers des sites mondiaux sont effectués et il est surprenant que le ping entre les États-Unis (Est) et le Royaume-Uni soit inférieur à 80 ms.
Vitesses de ping de Rugby, Royaume-Uni
- Londres, Royaume-Uni – 6,27 ms
- Amsterdam, Pays-Bas – 13,36 ms
- Paris, France – 13,39 ms
- Francfort DE – 19,89 ms
- New York (NJ) – 78,7 ms
- Chicago, Illinois – 92,17 ms
- Miami, Floride – 107,27 ms
- Dallas, Texas – 117,40 ms
- Seattle, Washington – 135,78 ms
- Atlanta, Géorgie – 139,66 ms
- Silicon Valley, Californie – 156,32 ms
- Los Angeles, Californie – 169,51 ms
- Singapour – 191,94 ms
- Tokyo, Japon – 229,30 ms
- Sydney, Australie – 291,34 ms
Vitesses de ping depuis New York, à l’est des États-Unis
- New York (NJ) – 0,36 ms
- Atlanta, Géorgie – 19,04 ms
- Chicago, Illinois – 20,94 ms
- Miami, Floride – 32,36 ms
- Dallas, Texas – 42,35 ms
- Seattle, Washington – 62,0433 ms
- Londres, Royaume-Uni – 67,52 ms
- Los Angeles, Californie – 70,68 ms
- Francfort DE – 78,54 ms
- Paris, France – 79,47 ms
- Silicon Valley, Californie – 79.841 ms
- Amsterdam, Pays-Bas – 80,65 ms
- Tokyo, Japon – 162,70 ms
- Sydney, Australie – 217,58 ms
- Singapour – 231,35 ms
Vitesses de ping depuis Singapour
- Singapour – 0,53 ms
- Tokyo, Japon – 77,10 ms
- Silicon Valley, Californie – 170,44 ms
- Los Angeles, Californie – 177,97 ms
- Francfort DE – 182,87 ms
- Londres, Royaume-Uni – 184,52 ms
- Seattle, Washington – 187,12 ms
- Sydney, Australie – 189,44 ms
- Dallas, Texas – 202,88 ms
- Chicago, Illinois – 218,10 ms
- New York (NJ) – 229,11 ms
- Atlanta, Géorgie – 240,88 ms
- Miami, Floride – 245,59 ms
- Paris, France – 256,78 ms
- Amsterdam, Pays-Bas – 326,08 ms
Vitesses de ping depuis le Vermont, à l’ouest des États-Unis
- Silicon Valley, Californie – 1,70 ms
- Los Angeles, Californie – 8,37 ms
- Seattle, Washington – 19,55 ms
- Dallas, Texas – 40,36 ms
- Chicago, Illinois – 54,36 ms
- Atlanta, Géorgie – 63,63 ms
- New York (NJ) – 74,56 ms
- Miami, Floride – 88,70 ms
- Tokyo, Japon – 109,07 ms
- Londres, Royaume-Uni – 139,23 ms
- Amsterdam, Pays-Bas – 144,52 ms
- Sydney, Australie – 157,04 ms
- Paris, France – 159,29 ms
- Francfort DE – 161,55 ms
- Singapour – 171,10 ms
Vitesses de ping depuis Tokyo, Japon
- Tokyo, Japon – 1,018 ms
- Singapour – 77,32 ms
- Seattle, Washington – 84,54 ms
- Silicon Valley, Californie – 108,94 ms
- Los Angeles, Californie – 110,05 ms
- Sydney, Australie – 114,74 ms
- Chicago, Illinois – 146,85 ms
- Dallas, Texas – 155,129 ms
- Atlanta, Géorgie – 163,17 ms
- New York (NJ) – 170,06 ms
- Miami, Floride – 174,35 ms
- Londres, Royaume-Uni – 229,86 ms
- Francfort DE – 253,58 ms
- Amsterdam, Pays-Bas – 273,022 ms
- Paris, France – 287,42 ms
Vous pouvez ensuite ajouter un petit projet en suivant ces valeurs de ping au jour le jour, par exemple en utilisant crontab et en les stockant dans la base de données …
Vous pouvez supposer que la vitesse de ping est similaire (bidirectionnelle) si vous échangez la source et la cible. Veuillez également noter que, pour des raisons de sécurité, veuillez désactiver vos services PING une fois que vous êtes satisfait de connaître cette vitesse de connexion.
Cette page sera mise à jour de manière irrégulière avec les serveurs mis à jour et la vitesse de ping.