我还是个初学者,请多包涵...
我找到了一个关于系统运行时间的函数,并在学习php和web开发的过程中进行了一些尝试。
我的目标是让输出看起来像天:小时:分钟:秒,但是由于没有$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
);
}