Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie dostępczości serwera poprzez "arping"
Forum PHP.pl > Forum > PHP
Rafik
Witam.

Muszę wykonać sprawdzanie dostępności serwerów z użyciem polecenia arping. Wszystko by było dobrze gdyby nie to, że do sprawdzenia jest kilkadziesiąt serwerów. Lista jest odczytywana z pliku *.txt a następnie w pętli while sprawdzany jest każdy serwer co trwa dość długo. Czy istnieje opcja wykonania w tym samym czasie wszystkich zapytań o dostępność serwerów i w odpowiedzi pobranie samego adresu mac? Mi aktualnie zwraca cały ciąg z danymi, np:

ARPING 91.204.160.180 from 91.204.160.15 eth0 Unicast reply from 91.204.160.180 [6C:F0:49:01:B6:16] 0.626ms Sent 1 probes (1 broadcast(s)) Received 1 response(s)

Kod, którego używam to:

  1. <?php
  2. $file = @fopen("listaip.txt", "r");
  3. if ($file) {
  4. while (!feof($file)) {
  5. $ip_data = explode(" ", fgets($file));
  6. echo "
  7. <strong>ID:</strong> ".$ip_data[0]."<br />
  8. <strong>IP:</strong> ".$ip_data[1]."<br />
  9. <strong>Status:</strong> ".system('/sbin/arping -c 1 '.$ip_data[1])."<br /><br />";
  10. }
  11. fclose($file);
  12. }
  13. ?>


Nie wiem czemu ale podczas użycia "exec" cały czas zwraca mi niepełne dane.

Przykładowe dane serwerów:
Kod
252    91.204.162.130
279    91.204.160.240
323    91.204.162.100
361    91.204.163.15
395    91.210.128.80


Pierwsza liczba oznacza ID serwera (tylko dla wiadomości admina).
wookieb
Istnieje możliwość odpalenia paru procesów php w celu przyspieszenia odczytywania wyników i możesz to zrobić za pomocą curl_multi_init, który umożliwi Ci coś takiego.
Rafik
Lepszym rozwiązaniem okazało się wygenerowanie całej listy i wykonanie POST przy każdym adresie za pomocą jQuery... smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.