Виконайте команди Ping та отримайте структуровані дані у PHP

3
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
У світі веб-розробки важливо мати надійні інструменти для діагностики мережі. У нашій статті ми розглянемо, як пакет spatie/ping для PHP спрощує виконання команд ping та надає структуровані дані, які можуть допомогти вам у моніторингу доступності серверів. Чи готові дізнатися, як цей пакет може змінити ваш підхід до мережевої діагностики? Читайте далі

PHP-пакет spatie/ping дозволяє просто виконувати команди ping за протоколом ICMP та обробляти результати у структурованому вигляді. Ping допомагає визначити, чи доступний віддалений хост, що забезпечує мережеву діагностику та вимірювання затримки.

Спеціалісти Spatie створили пакет ping для PHP, щоб спростити виконання команд ping та отримання структурованих даних:

Під час розробки цієї функції я шукав надійні PHP-пакети для виконання ping в Unix та повернення структурованих результатів, а також для відкриття TCP-з’єднання. Оскільки таких пакетів не було, я вирішив написати їх сам.

Яким чином працює цей пакет?

Перед тим як ознайомитися з PHP-пакетом, розгляньмо команду з параметрами за замовчуванням. Вона відправляє один пакет і встановлює таймаут у 5 секунд:

$ ping -c 1 -W 5000 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=251 time=24.049 ms
  
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 24.049/24.049/24.049/nan ms

З документації ви дізнаєтеся, що можете використовувати клас Ping (з налаштовуваними параметрами) для виконання команди ping. Результат міститиме корисну інформацію у структурованому вигляді:

use Spatie\Ping\Ping;
  
$result = (new Ping('8.8.8.8'))->run();
  
// Основний статус
echo $result->isSuccess() ? 'Успіх' : 'Не вдалося';
echo $result->hasError() ? "Помилка: {$result->error()->value}" : 'Помилок немає';
  
// Статистика пакетів
echo "Передано пакетів: {$result->packetsTransmitted()}";
echo "Отримано пакетів: {$result->packetsReceived()}";
echo "Втрата пакетів: {$result->packetLossPercentage()}%";
  
// Інформація про затримку
echo "Мінімальний час: {$result->minimumTimeInMs()}ms";
echo "Максимальний час: {$result->maximumTimeInMs()}ms";
echo "Середній час: {$result->averageTimeInMs()}ms";
echo "Середнє квадратичне відхилення: {$result->standardDeviationTimeInMs()}ms";

Також ви можете отримати окремі рядки ping:

// Окремі рядки ping
foreach ($result->lines() as $line) {
    echo "Відповідь: {$line->getRawLine()} ({$line->getTimeInMs()}ms)";
}

🧑‍💻 Розпочати роботу з цим пакетом можна на GitHub: spatie/ping

Популярні

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту