Ищет объекты со свойством IP, пингует их.
Если результат 1 и отличается от предыдущего статуса объекта, вызывает метод объекта со значением 1(Online).
Если результат 0 и отличается от предыдущего статуса объекта, проверяется свойство PingTime (где указывается количество отрицательных пингов до присвоения статуса offline) и в случае неудачной попытки присваивается значение attempt равное количеству попыток. Как только количество неудачных попыток сравняется со значением PingTime - вызывается метод объекта со значением 0 (offline)
Все так сложно потому, что например, яблофон зачастую не пингуется 12 раз подряд через минуту, ардуино в пределах 9, камеры в пределах 3 раз. В таком случае значение online offline прыгает каждую минуту
Код: Выделить всё
$objects=SQLSelect("SELECT TITLE FROM objects");
$total=count($objects);
for($i=0;$i<$total;$i++) {
if (gg($objects[$i]['TITLE'].'.IP')) {
if ((gg($objects[$i]['TITLE'].'.IP'))>0){
if (ping(gg($objects[$i]['TITLE'].'.IP'))) {
callMethod($objects[$i]['TITLE'].'.statusChanged',array("value"=>1));
} else {// если 0
if (ping(gg($objects[$i]['TITLE'].'.IP'))) {
callMethod($objects[$i]['TITLE'].'.statusChanged',array("value"=>1));
}else{
if (ping(gg($objects[$i]['TITLE'].'.IP'))) {
callMethod($objects[$i]['TITLE'].'.statusChanged',array("value"=>1));
}else{
callMethod($objects[$i]['TITLE'].'.statusChanged',array("value"=>0));
}
}
}
}
}
}