基于时间的PHP条件(如果最后一次ping是在x分钟前,则文本会更改颜色)


PHP Condition based on time (text changes color if last ping was x minutes ago)

我正在制作一个简单的接口,用php接口远程监控一些设备。我写了一个小脚本,它ping到我的服务器,并将每个ping写入日志中,并在php页面中显示最后一个:"last ping 10:24 pm"

我希望能够根据设备上次ping的时间更改文本的颜色:例如:如果不到5分钟前:文本为绿色。10到5之间:橙色。超过10:红色。

我该怎么做?

提前感谢!:)

您使用此get解析日期并为文本赋予颜色。调整时间以查看差异:

$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>";