Posiadam taki kod:
<?php function ping($host,$port=80,$timeout=4) { if ( ! $fsock ) { return FALSE; } else { return TRUE; } } $ip = 'ip'; $baza = 'baza'; $login = 'login'; $haslo = 'haslo'; } } $zapytanie = "SELECT * FROM alarmy"; $host1 = $row[1]; $up1 = ping($host1); $ison = $row[3]; $nazwa = $row[2]; $status = $row[4]; if( $ison == 1 ) { if( $up1 ) { $update = "UPDATE alarmy SET status = '1' WHERE nazwa = '$nazwa'"; } else { if ( $up1 ) { $update = "UPDATE alarmy SET status = '1' WHERE nazwa = '$nazwa'"; } else { $update = "UPDATE alarmy SET status = '0' WHERE nazwa = '$nazwa'"; } }} $update = "UPDATE alarmy SET status = '1' WHERE nazwa = '$nazwa'"; } //Wyłączone } $zapytanie = "SELECT * FROM alarmy"; $host1 = $row[1]; $up1 = ping($host1); $ison = $row[3]; $nazwa = $row[2]; $status = $row[4]; if ($status == 0){ $x = "Urzadzenie $nazwa nie pracuje!"; } } ?>
Posiadam kilka urządzeń, do których są podpięte access pointy.
W chwili braku zasilania urządzenia, AP również nie dostaje prądu co skutkuje brakiem odpowiedzi ping - taki system alarmowy dla urządzeń.
Problem polega na tym, że czasem urządzenie zwolni/nie pracuje przez kilka ms. Skutkuje to fałszywymi alarmami. W związku z tym wymyśliłem, że poprzez funckję sleep() sprawdzę urządzenie ponownie w celu weryfikacji alarmu fałszywego/ prawdziwego.
Problem w tym, że nie działa to tak jak powinno i pomimo ustalonego sleep(40) skrypt, dalej wykrywa brak pracy i dostaję maila z powiadomieniem.
AP uruchamia się w czasie 15-20 s (ping przechodzi po tym czasie).
Co źle robię, a może użyć czegoś innego zamiast sleep ?
$host1 = ip urządzenia
$ison = ustawienie, czy urządzenie w ogóle ma być sprawdzane, czy może jest wyłączone - ustawione manualnie przeze mnie
$nazwa = nazwa
$status = jeśli status 0 dostaję maila, jeśli 1- wszystko ok.
Skrypt ustawiony w cronie co 3 min.