✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka tehdä ping-testejä globaaleille palvelimille PHP:n avulla?

25

Harkitsen äskettäin kolmannen VPS-palvelimeni ostamista, ja ping-nopeus on yksi huolenaiheista. Minulla on suhteellisen korkea ping (noin 250 ms) Isosta-Britanniasta Singaporessa sijaitsevaan palvelimeen, mikä tekee komentojen kirjoittamisesta SSH-konsolissa hieman epämiellyttävää.

Onneksi jotkut VPS-palveluntarjoajat, kuten Vultr, tarjoavat IP-osoitteet 15 sijainnilleen, joten voit testata ping-nopeutta. Kuinka tehdä tämä automaattisesti kirjoittamatta ping – komentoa joka kerta?

vultr-palvelinsijainnit maailmanlaajuisesti

Voit löytää esimerkki PHP-skriptin tätä varten:

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

Tämän kätevän PHP-skriptin ydin on käyttää exec – funktiota, joka suorittaa ulkoisen ping-komennon ja palauttaa tulostensa viimeisen rivin.

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

Tämän jälkeen käytämme lähtömerkkijonon perusteella regex-testausohjelmaa preg_match ja laskemme näiden kolmen pingin keskiarvon. Lopuksi lajittelemme taulukon arvojen mukaan. Alla suoritetaan nopeustestejä Isosta-Britanniasta, USA:sta ja Singaporesta maailmanlaajuisiin paikkoihin ja on yllättävää, että ping USA:n (East) ja Iso-Britannian välillä on alle 80 ms.

Ping Speeds Rugbysta, Isosta-Britanniasta

  1. Lontoo, Iso-Britannia – 6,27 ms
  2. Amsterdam, NL – 13,36 ms
  3. Pariisi, Ranska – 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. Piilaakso, Kalifornia – 156,32 ms
  12. Los Angeles, Kalifornia – 169,51 ms
  13. Singapore – 191,94 ms
  14. Tokio, Japani – 229,30 ms
  15. Sydney, Australia – 291,34 ms

Ping Speeds New Yorkista, USA:n itäosasta

  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. Lontoo, Iso-Britannia – 67,52 ms
  8. Los Angeles, Kalifornia – 70,68 ms
  9. Frankfurt DE – 78,54 ms
  10. Pariisi, Ranska – 79,47 ms
  11. Piilaakso, Kalifornia – 79,841 ms
  12. Amsterdam, NL – 80,65 ms
  13. Tokio, Japani – 162,70 ms
  14. Sydney, Australia – 217,58 ms
  15. Singapore – 231,35 ms

Ping Speeds Singaporesta

  1. Singapore – 0,53 ms
  2. Tokio, Japani – 77,10 ms
  3. Piilaakso, Kalifornia – 170,44 ms
  4. Los Angeles, Kalifornia – 177,97 ms
  5. Frankfurt DE – 182,87 ms
  6. Lontoo, Iso-Britannia – 184,52 ms
  7. Seattle, Washington – 187,12 ms
  8. Sydney, Australia – 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. Pariisi, Ranska – 256,78 ms
  15. Amsterdam, NL – 326,08 ms

Ping Speeds Vermontista, USA:n länsiosasta

  1. Piilaakso, Kalifornia – 1,70 ms
  2. Los Angeles, Kalifornia – 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. Tokio, Japani – 109,07 ms
  10. Lontoo, Iso-Britannia – 139,23 ms
  11. Amsterdam, NL – 144,52 ms
  12. Sydney, Australia – 157,04 ms
  13. Pariisi, Ranska – 159,29 ms
  14. Frankfurt DE – 161,55 ms
  15. Singapore – 171,10 ms

Ping Speeds Tokiosta, Japanista

  1. Tokio, Japani – 1,018 ms
  2. Singapore – 77,32 ms
  3. Seattle, Washington – 84,54 ms
  4. Piilaakso, Kalifornia – 108,94 ms
  5. Los Angeles, Kalifornia – 110,05 ms
  6. Sydney, Australia – 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. Lontoo, Iso-Britannia – 229,86 ms
  13. Frankfurt DE – 253,58 ms
  14. Amsterdam, NL – 273,022 ms
  15. Pariisi, Ranska – 287,42 ms

Voit sitten lisätä pienen projektin seuraamalla näitä ping-arvoja päivittäin esim. käyttämällä crontabia ja tallentamalla sen tietokantaan

Voit olettaa, että ping-nopeus on samanlainen (kaksisuuntainen), jos vaihdat lähteen ja kohteen. Huomaa myös, että turvallisuussyistä sammuta PING-palvelut, kun olet iloinen kuullessasi yhteyden nopeuden.

Tätä sivua päivitetään epäsäännöllisin väliajoin päivitetyillä palvelimilla ja ping-nopeudella.

Aiheeseen liittyvät julkaisut

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja