Необходимо отслеживать время простоя ПК с помощью PHP ping и отображения времени вниз D: HH: MM

В настоящее время у меня есть этот код, который работает как ph, который работает, чтобы сообщить мне, если ps ping:

<!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="30"> </head> <body> <h1>PC Test Ping Status</h1> <?php $host="10.161.10.98"; exec("ping -c 2 " . $host, $output, $result); if ($result == 0) echo "<p>p2 On-Line</p>"; else echo "<p>p2 Off-Line !</p>"; $host="10.161.10.125"; exec("ping -c 2 " . $host, $output, $result); if ($result == 0) echo "<p>p3 On-Line</p>"; else echo "<p>p3 Off-Line!</p>"; ?> </body> </html> 

Я хочу отслеживать время с момента последнего успешного пинга, если компьютер не пинговал.

Solutions Collecting From Web of "Необходимо отслеживать время простоя ПК с помощью PHP ping и отображения времени вниз D: HH: MM"

Вот пример использования текстового файла в соответствии с запросом. Несколько примечаний:

  1. Для простоты я предлагаю использовать CURL вместо exec поскольку он должен быть намного быстрее и надежнее. Это проверяет код состояния HTTP «200», что означает, что он вернул действительный запрос.
  2. Вам нужно будет убедиться, что ваши текстовые файлы имеют соответствующие разрешения на чтение и запись.
  3. Я обновил этот ответ, чтобы ответить на другой вопрос .

Исходный текстовый файл в этом примере называется data.txt и содержит следующее:

 p1|google.com| p2|yahoo.com| p2|amazon.com| 

Следующий код будет циклически проходить через каждый сервер в списке и обновлять записи с последней датой, если он находится в сети.

 <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="30"> </head> <body> <h1>PC Test Ping Status</h1> <?php function ping($addr) { $ch = curl_init($addr); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //get response code curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($code === 200) { return true; } return false; } $file = 'data.txt'; $servers = array_filter(explode("\n", file_get_contents($file))); foreach ($servers as $key => $server) { list($sname, $saddr, $suptime) = explode('|', $server); if (ping($saddr)) { echo "<p>$sname is online</p>"; $date = new DateTime(); $suptime = $date->format('Ymd H:i:s'); } else { echo "<p>$sname is offline since: "; if (trim($suptime) !== '') { echo $suptime . '</p>'; } else { echo 'unknown</p>'; } } $servers[$key] = implode('|', array($sname, $saddr, $suptime)) . "\n"; } file_put_contents($file, $servers); ?> </body> </html>