✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як зробити тести ping для глобальних серверів за допомогою PHP?

24

Нещодавно я розглядаю можливість придбання свого третього VPS-сервера, і швидкість ping викликає занепокоєння. У мене відносно високий пінг (близько 250 мс) із Великобританії на сервер, розташований у Сінгапурі, що робить введення команд у консолі SSH трохи неприємним.

На щастя, деякі провайдери VPS, наприклад Vultr, надають IP-адреси для своїх 15 місць, тому ви можете перевірити швидкість ping. Як зробити це автоматично, не вводячи кожного разу команду ping?

розташування серверів vultr у всьому світі

Ви можете знайти зразок сценарію PHP для цього:

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

Суть цього зручного сценарію PHP полягає у використанні функції exec, яка запускає зовнішню команду ping і повертає останній рядок її виводу.

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

Потім на основі вихідного рядка ми використовуємо тестер регулярних виразів preg_match і усереднюємо ці 3 ping. Нарешті, ми сортуємо масив за значеннями. Нижче наведено тести швидкості з Великобританії, США та Сінгапуру до глобальних місць, і дивно, що пінг між США (Схід) і Великобританією становить менше 80 мс.

Швидкість ping з Rugby, Великобританія

  1. Лондон, Великобританія – 6,27 мс
  2. Амстердам, Нідерланди – 13,36 мс
  3. Париж, Франція – 13,39 мс
  4. Frankfurt DE – 19,89 мс
  5. Нью-Йорк (Нью-Джерсі) – 78,7 мс
  6. Чикаго, Іллінойс – 92,17 мс
  7. Маямі, Флорида – 107,27 мс
  8. Даллас, Техас – 117,40 мс
  9. Сіетл, Вашингтон – 135,78 мс
  10. Атланта, Джорджія – 139,66 мс
  11. Кремнієва долина, Каліфорнія – 156,32 мс
  12. Лос-Анджелес, Каліфорнія – 169,51 мс
  13. Сінгапур – 191,94 мс
  14. Токіо, Японія – 229,30 мс
  15. Сідней, Австралія – 291,34 мс

Швидкість ping з Нью-Йорка, схід США

  1. Нью-Йорк (Нью-Джерсі) – 0,36 мс
  2. Атланта, Джорджія – 19,04 мс
  3. Чикаго, Іллінойс – 20,94 мс
  4. Маямі, Флорида – 32,36 мс
  5. Даллас, Техас – 42,35 мс
  6. Сіетл, Вашингтон – 62,0433 мс
  7. Лондон, Великобританія – 67,52 мс
  8. Лос-Анджелес, Каліфорнія – 70,68 мс
  9. Frankfurt DE – 78,54 мс
  10. Париж, Франція – 79,47 мс
  11. Силіконова долина, Каліфорнія – 79,841 мс
  12. Амстердам, Нідерланди – 80,65 мс
  13. Токіо, Японія – 162,70 мс
  14. Сідней, Австралія – 217,58 мс
  15. Сінгапур – 231,35 мс

Швидкість ping із Сінгапуру

  1. Сінгапур – 0,53 мс
  2. Токіо, Японія – 77,10 мс
  3. Кремнієва долина, Каліфорнія – 170,44 мс
  4. Лос-Анджелес, Каліфорнія – 177,97 мс
  5. Frankfurt DE – 182,87 мс
  6. Лондон, Великобританія – 184,52 мс
  7. Сіетл, Вашингтон – 187,12 мс
  8. Сідней, Австралія – 189,44 мс
  9. Даллас, Техас – 202,88 мс
  10. Чикаго, Іллінойс – 218,10 мс
  11. Нью-Йорк (Нью-Джерсі) – 229,11 мс
  12. Атланта, Джорджія – 240,88 мс
  13. Маямі, Флорида – 245,59 мс
  14. Париж, Франція – 256,78 мс
  15. Амстердам, Нідерланди – 326,08 мс

Швидкість ping з Вермонта, Захід США

  1. Силіконова долина, Каліфорнія – 1,70 мс
  2. Лос-Анджелес, Каліфорнія – 8,37 мс
  3. Сіетл, Вашингтон – 19,55 мс
  4. Даллас, Техас – 40,36 мс
  5. Чикаго, Іллінойс – 54,36 мс
  6. Атланта, Джорджія – 63,63 мс
  7. Нью-Йорк (Нью-Джерсі) – 74,56 мс
  8. Маямі, Флорида – 88,70 мс
  9. Токіо, Японія – 109,07 мс
  10. Лондон, Великобританія – 139,23 мс
  11. Амстердам, Нідерланди – 144,52 мс
  12. Сідней, Австралія – 157,04 мс
  13. Париж, Франція – 159,29 мс
  14. Frankfurt DE – 161,55 мс
  15. Сінгапур – 171,10 мс

Швидкість ping з Токіо, Японія

  1. Токіо, Японія – 1,018 мс
  2. Сінгапур – 77,32 мс
  3. Сіетл, Вашингтон – 84,54 мс
  4. Силіконова долина, Каліфорнія – 108,94 мс
  5. Лос-Анджелес, Каліфорнія – 110,05 мс
  6. Сідней, Австралія – 114,74 мс
  7. Чикаго, Іллінойс – 146,85 мс
  8. Даллас, Техас – 155,129 мс
  9. Атланта, Джорджія – 163,17 мс
  10. Нью-Йорк (Нью-Джерсі) – 170,06 мс
  11. Маямі, Флорида – 174,35 мс
  12. Лондон, Великобританія – 229,86 мс
  13. Frankfurt DE – 253,58 мс
  14. Амстердам, Нідерланди – 273,022 мс
  15. Париж, Франція – 287,42 мс

Потім ви можете додати невеликий проект, відстежуючи ці значення ping день за днем, наприклад, використовуючи crontab, і зберігати його в базі даних

Ви можете припустити, що швидкість ping подібна (двонаправлена), якщо поміняти місцями джерело та ціль. Будь ласка, також зауважте, що з міркувань безпеки вимкніть свої служби PING, коли дізнаєтесь про швидкість з’єднання.

Ця сторінка буде оновлюватися нерегулярно з оновленими серверами та швидкістю ping.

Схожі повідомлення

Джерело запису: helloacm.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі