还是一个初学者,所以请和我一起...
因此,我发现此功能可延长系统的正常运行时间,并且在我了解php和Web开发的一般知识时一直在鬼混。
我的目标是使输出看起来像days:hours:mins:secs,但是没有$ seconds变量,因此我根据自己的情况添加了这一行。
除了秒显示为0以外,其他所有功能都很好。我不太确定自己做错了什么,或者这是否是执行此操作的最佳方法。

function Uptime() {

    $uptime = @file_get_contents( "/proc/uptime");

    $uptime = explode(" ",$uptime);
    $uptime = $uptime[0];
    $days = explode(".",(($uptime % 31556926) / 86400));
    $hours = explode(".",((($uptime % 31556926) % 86400) / 3600));
    $minutes = explode(".",(((($uptime % 31556926) % 86400) % 3600) / 60));
    $seconds = explode(".",((((($uptime % 31556926) % 86400) % 3600) / 60) / 60));

    $time = $days[0].":".$hours[0].":".$minutes[0].":".$seconds[0];

    return $time;

}

编辑:我能够使它以不同的方式工作,下面是新功能。
我也很好奇,是否有人可以回答为什么上述方法不能按预期方式工作,以及下面的新方法是否是实现此目的的最佳方法。
function Uptime() {
    $ut = strtok( exec( "cat /proc/uptime" ), "." );
    $days = sprintf( "%2d", ($ut/(3600*24)) );
    $hours = sprintf( "%2d", ( ($ut % (3600*24)) / 3600) );
    $min = sprintf( "%2d", ($ut % (3600*24) % 3600)/60  );
    $sec = sprintf( "%2d", ($ut % (3600*24) % 3600)%60  );


    return array( $days, $hours, $min, $sec );
}
$ut = Uptime();
echo "Uptime: $ut[0]:$ut[1]:$ut[2]:$ut[3]";

编辑2:根据nwellnhof给出的答案,我认为最后一种方法是最好的。我必须稍作调整才能完全获得所需的输出。谢谢你们。
function Uptime() {
        $str   = @file_get_contents('/proc/uptime');
        $num   = floatval($str);
        $secs  = $num % 60;
        $num   = (int)($num / 60);
        $mins  = $num % 60;
        $num   = (int)($num / 60);
        $hours = $num % 24;
        $num   = (int)($num / 24);
        $days  = $num;

        return array(
            "days"  => $days,
            "hours" => $hours,
            "mins"  => $mins,
            "secs"  => $secs
        );
    }

最佳答案

直接从/proc/uptime读取是Linux上最有效的解决方案。有多种方法可以将输出转换为天/小时/分钟/秒。尝试类似的东西:

$str   = @file_get_contents('/proc/uptime');
$num   = floatval($str);
$secs  = fmod($num, 60); $num = (int)($num / 60);
$mins  = $num % 60;      $num = (int)($num / 60);
$hours = $num % 24;      $num = (int)($num / 24);
$days  = $num;

或者,使用intdiv(PHP7):
$str   = @file_get_contents('/proc/uptime');
$num   = floatval($str);
$secs  = fmod($num, 60); $num = intdiv($num, 60);
$mins  = $num % 60;      $num = intdiv($num, 60);
$hours = $num % 24;      $num = intdiv($num, 24);
$days  = $num;

关于php - 如何在php中显示系统正常运行时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38907572/

10-10 17:42