我正在创建一个简单的界面来使用php界面远程监控某些设备。 我写了一个小脚本,ping到我的服务器并在日志中写入每个ping,并在php页面中显示最后一个:“Last ping 10:24 pm”
我希望能够根据上次设备ping的时间更改文本的颜色:例如:如果它少于5分钟前:文本为绿色。 10到5之间:橙色。超过10:红色。
我该怎么做?
提前致谢! :)
答案 0 :(得分:1)
您使用此解析日期并为文本添加颜色。调整时间,看看差异:
$line = '[09/Sep/2014:15:32:52] (log) NameOfDevice';
preg_match_all('^\[(.*?)\]^', $line, $matches, PREG_PATTERN_ORDER);
$raw_date = $matches[1][0];
$log_date = DateTime::createFromFormat('d/M/Y:H:i:s', $raw_date);
$final_log_date = $log_date->format('Y-m-d H:i:s');
// handle ago
$now = new DateTime;
$ago = new DateTime($final_log_date);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array('y' => 'year', 'm' => 'month', 'w' => 'week','d' => 'day', 'h' => 'hour','i' => 'minute', 's' => 'second',);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
$string = array_slice($string, 0, 1);
// handle color
$minute = round(abs($now->getTimestamp() - $ago->getTimestamp()) / 60,2);
$color = 'black';
if($minute <= 5) {
$color = 'green';
} elseif ($minute > 5 && $minute <= 10) {
$color = 'orange';
} else {
$color = 'red';
}
$time = implode(', ', $string) . ' ago';
echo "<span style='color: $color;'>$time</span>";