Ich hätte da mal folgende Wünsche zur Verbesserung/Erweiterung von Sys_Ping
1.) Die Möglichkeit eine Anzahl mitzugeben
>> Sys_Ping($ip, $timeout, $count)
Und passend dazu:
2.) Die Möglichkeit bei der Anzahl mitgeben zu können, wie viele „ok“ sein müssen, damit der Sys_Ping Befehl als TRUE gewertet wird
>> Sys_Ping($ip, $timeout, $count, $successrate)
Beispiel: Sys_Ping(„192.168.2.1“, 3000, 5, 4)
In diesem Fall würde IPS die IP „192.168.2.1“ genau 5x anpingen
und wenn 4 Pings ok waren ein TRUE zurückgeben
und wenn nur 3 Pings ok waren ein FALSE zurückgeben
Warum braucht man das?
Weil immer mal ein Ping verloren geht In allen mir bekannten Monitoring-Programmen ist so eine Einstellung möglich, weil es halt wirklich so ist, dass immer mal ein Ping verloren gehen kann - was aber nicht schlimm ist, so lange es z.B. nur 1 von 5 ist.
Aktuell der Fall bei der neuen USV - die immer mal einen Ping verschluckt :rolleyes:
Hier noch zur Veranschaulichung die Funktion die ich aktuell als „Workaround“ verwende:
function Ping_Check($host, $timeout, $count, $successRate)
{
$successCount = 0;
for ($i = 1; $i <= $count; $i++) {
if (@Sys_Ping($host, $timeout) === true) {
$successCount++;
}
}
if ($successCount >= $successRate) {
return true;
}
return false;
}
Ping_Check(„192.168.2.1“, 1000, 10, 7);
>> In diesem Beispiel müssten 7 von 10 Pings erfolgreich sein, damit die Funktion ein TRUE zurückliefert. Würden nur 6 Pings erfolgreich sein, würde FALSE zurückgegeben.
Sowas halt direkt bei „Sys_Ping“ mit einbauen wäre schön 2 weitere (optionale) Parameter halten alles weiterhin abwärts kompatibel und lässt sich bestimmt easy ins IPS einbauen
Problem daran ist, dass das Script halt unter Umständen sehr lange läuft. Deswegen frage ich weiterhin kontinuierlich im Intervall ab und „zähle“ einfach die Anzahl an Versuchen.
Bei 10 Pings mit einem Timeout von 1000ms läuft das Skript (bzw. der Abschnitt) maximal ~10 Sekunden. Das kann man sich ja mittels Timeout und Ping-Anzahl nach belieben einstellen/anpassen, so dass das Skript nicht ewig braucht oder aufgehalten wird.
Im LAN kann man z.B. einen Timeout von 100ms verwenden, wählt eine Anzahl von z.B. 5 Pings, von denen z.B. 3 erfolgreich sein müssen. Damit hätte man bei 0 erfolgreichen Pings etwa 500ms „Verzögerung“.