С помощью команды PING с PHP


у Меня есть функция, которая должна капать 5 машин во внутренней сети. Я использую команду ниже:

 //EXECUTA O PING
 exec("ping " . $host, $output, $result);

что происходит, это следующее. Если я помещаю ip-адрес любого, за пределами картины, как "192.999.999.999" испытание функции, ниже, возвращает правильно, что не существует (OFF):

// TESTA O RESULTADO
if ($result == 0) {
  echo "ON";
} else {
  echo "OFF";
}

Теперь, если я ставлю ip правильным, но только находится в автономном режиме, он возвращает мне всегда ОНЛАЙН. Если ip-адрес находится даже в интернете он также возвращает мне ИНТЕРНЕТ, что является правильным.

Есть ли другой способ использовать эту связь в PHP? Таким образом, что он распознает, когда ip-находится в автономном режиме?

 5
Author: Diego, 2016-10-13

2 answers

Редактировал команду exec, добавляя следующим образом:

exec("ping -n 1 -w 1 " . $host, $output, $result);

Таким образом, кроме того, чтобы выиграть время, результат оказался правильным.

 4
Author: Diego, 2016-10-13 12:32:00

Попробуйте следующим образом:

exec('ping 127.0.0.1', $saida, $retorno);
if (count($saida)) {
    print 'A Máquina está online e os dados do PING foram gravados em $saida. :)';
} else {
    print 'A Máquina NÃO está online ou o host não pode ser encontrado. :(';
}
 2
Author: Don't Panic, 2016-10-13 11:50:24