Я пытаюсь показать UpTime в днях, часах, минутах, секундах.
Что-то вроде 20 дней, 4 часа, 9 минут, 3 секунды
Вот мой PHP-код:
// Get uptime with my SNMP class
$iTicks = $oHardwareMonitoring->fGetSystemUpTime();
// Convert Ticks to seconds
$iSecondes = $iTicks / 100;
// Convert seconds to Days, Hours, Minutes, Seconds
$sSecondes = gmdate('s', $iSecondes);
$sMinutes = ($sSecondes > 60 ? round(($sSecondes / 60), 0) : null);
$sHeures = ($sMinutes > 60 ? round(($sMinutes / 60), 0) : null);
$sJours = ($sHeures > 24 ? round(($sHeures / 24), 0) : null);
// Show the result
echo '<b>'.$sInfosUptime.'</b> : '.
($sJours != null ? $sJours.' '.DAY.' ' : null).
($sHeures != null ? $sHeures.' '.HOUR.' ' : null).
($sMinutes != null ? $sMinutes.' '.MINUTE.' ' : null).
$sSecondes.' '.SECONDE;
Когда я выполняю PHP, я получаю 38 секунд за 429859 клещи.
Как правильно показать время безотказной работы?
$sSecondes
никогда не может быть больше 60, потому что вы используете gmdate('s', $iSecondes);
который возвращает значение между 00 и 59. Следовательно, следующие условия никогда не будут оцениваться как true
,
Используя следующую строку:
$sMinutes = ($iSecondes > 60 ? round(($iSecondes / 60), 0) : null);
возвращает:
1 час 72 минуты 38 секунд
Лучше, но не совсем то, что ожидается.
Мы можем получить правильное количество каждой единицы, используя модуль, деление и floor()
:
$sSecondes = $iSecondes%60;
$sMinutes = floor($iSecondes%3600/60);
$sHeures = floor($iSecondes%86400/3600);
$sJours = floor($iSecondes/86400);
Который возвращает:
1 час 11 минут 38 секунд
Я не мог проверить код, так как у меня нет доступного веб-сервера сразу:
// Get uptime with my SNMP class
$iTicks = $oHardwareMonitoring->fGetSystemUpTime();
// Convert Ticks to secondes
$iSecondes = $iTicks / 100;
// Convert secondes to Days, Hours, Minutes, Secondes
$sSecondes = $iSecondes % 60;
$sMinutes = round($iSecondes / 60,0);
$sHeures = round($sMinutes / 60,0);
$sJours = round($sHeures / 24,0);
// Show the result
echo '<b>'.$sInfosUptime.'</b> : '.
($sJours != 0 ? $sJours.' '.DAY.' ' : null).
($sHeures != 0 ? $sHeures.' '.HOUR.' ' : null).
($sMinutes != 0 ? $sMinutes.' '.MINUTE.' ' : null).
$sSecondes.' '.SECONDE;