✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur gör man Ping-tester till globala servrar med PHP?

22

Jag överväger nyligen att köpa min tredje VPS-server och pinghastigheten är ett problem. Jag har en relativt hög ping (cirka 250 ms) från Storbritannien till servern i Singapore, vilket gör det lite obehagligt att skriva kommandon i SSH-konsolen.

Som tur är tillhandahåller vissa VPS-leverantörer, t.ex. Vultr, IP-adresser för sina 15 platser, så att du kan testa pinghastigheten. Hur gör man detta automatiskt utan att skriva ping -kommando varje gång?

vultr-serverplatser globalt

Du kan hitta ett exempel på PHP-skript för att göra detta:

<?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";
}

Kärnan i detta praktiska PHP-skript är att använda exec- funktionen, som kör det externa kommandot ping och returnerar den sista raden av dess utdata.

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

Baserat på utdatasträngen använder vi sedan regex -testaren preg_match och snittar dessa 3 pingar. Slutligen sorterar vi matrisen efter värden. Nedan utförs hastighetstesterna från Storbritannien, USA och Singapore till globala platser och det är förvånande att ping mellan USA (öst) och Storbritannien är mindre än 80ms.

Pinghastigheter från Rugby, Storbritannien

  1. London, Storbritannien – 6,27 ms
  2. Amsterdam, NL – 13.36 ms
  3. Paris, Frankrike – 13.39 ms
  4. Frankfurt DE – 19,89 ms
  5. New York (NJ) – 78,7 ms
  6. Chicago, Illinois – 92,17 ms
  7. Miami, Florida – 107,27 ms
  8. Dallas, Texas – 117.40 ms
  9. Seattle, Washington – 135,78 ms
  10. Atlanta, Georgia – 139,66 ms
  11. Silicon Valley, Kalifornien – 156,32 ms
  12. Los Angeles, Kalifornien – 169,51 ms
  13. Singapore – 191,94 ms
  14. Tokyo, Japan – 229.30 ms
  15. Sydney, Australien – 291,34 ms

Ping Speeds från New York, öster om USA

  1. New York (NJ) – 0,36 ms
  2. Atlanta, Georgia – 19.04 ms
  3. Chicago, Illinois – 20,94 ms
  4. Miami, Florida – 32,36 ms
  5. Dallas, Texas – 42,35 ms
  6. Seattle, Washington – 62,0433 ms
  7. London, Storbritannien – 67,52 ms
  8. Los Angeles, Kalifornien – 70,68 ms
  9. Frankfurt DE – 78,54 ms
  10. Paris, Frankrike – 79,47 ms
  11. Silicon Valley, Kalifornien – 79.841 ms
  12. Amsterdam, NL – 80,65 ms
  13. Tokyo, Japan – 162,70 ms
  14. Sydney, Australien – 217,58 ms
  15. Singapore – 231,35 ms

Ping Speeds från Singapore

  1. Singapore – 0,53 ms
  2. Tokyo, Japan – 77,10 ms
  3. Silicon Valley, Kalifornien – 170,44 ms
  4. Los Angeles, Kalifornien – 177,97 ms
  5. Frankfurt DE – 182,87 ms
  6. London, Storbritannien – 184,52 ms
  7. Seattle, Washington – 187,12 ms
  8. Sydney, Australien – 189,44 ms
  9. Dallas, Texas – 202,88 ms
  10. Chicago, Illinois – 218,10 ms
  11. New York (NJ) – 229,11 ms
  12. Atlanta, Georgia – 240,88 ms
  13. Miami, Florida – 245,59 ms
  14. Paris, Frankrike – 256,78 ms
  15. Amsterdam, NL – 326,08 ms

Ping Speeds från Vermont, västra USA

  1. Silicon Valley, Kalifornien – 1,70 ms
  2. Los Angeles, Kalifornien – 8,37 ms
  3. Seattle, Washington – 19.55 ms
  4. Dallas, Texas – 40,36 ms
  5. Chicago, Illinois – 54,36 ms
  6. Atlanta, Georgia – 63,63 ms
  7. New York (NJ) – 74,56 ms
  8. Miami, Florida – 88,70 ms
  9. Tokyo, Japan – 109,07 ms
  10. London, Storbritannien – 139,23 ms
  11. Amsterdam, NL – 144,52 ms
  12. Sydney, Australien – 157,04 ms
  13. Paris, Frankrike – 159,29 ms
  14. Frankfurt DE – 161,55 ms
  15. Singapore – 171,10 ms

Ping Speeds från Tokyo, Japan

  1. Tokyo, Japan – 1,018 ms
  2. Singapore – 77,32 ms
  3. Seattle, Washington – 84,54 ms
  4. Silicon Valley, Kalifornien – 108,94 ms
  5. Los Angeles, Kalifornien – 110,05 ms
  6. Sydney, Australien – 114,74 ms
  7. Chicago, Illinois – 146,85 ms
  8. Dallas, Texas – 155.129 ms
  9. Atlanta, Georgia – 163,17 ms
  10. New York (NJ) – 170,06 ms
  11. Miami, Florida – 174,35 ms
  12. London, Storbritannien – 229,86 ms
  13. Frankfurt DE – 253,58 ms
  14. Amsterdam, NL – 273.022 ms
  15. Paris, Frankrike – 287,42 ms

Du kan sedan lägga till ett litet projekt genom att spåra dessa pingvärden dag för dag, t.ex. använda crontab och lagra det i databasen

Du kan anta att pinghastigheten är liknande (dubbelriktad) om du byter källa och mål. Observera också att du av säkerhetsskäl stänger av dina PING-tjänster när du är glad över att anslutningshastigheten.

Den här sidan kommer att uppdateras på oregelbunden basis med uppdaterade servrar och pinghastighet.

relaterade inlägg

Inspelningskälla: helloacm.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer