PHP获取Linux服务器运行时间

 

php获取系统运行时间

最近无聊在项目中做了一个关于服务器运行时间的展示,用PHP写的,整个程序写完运行了几个月都没有毛病,但是今天早上打开发现报错,经过检查原来是Linux服务器执行“uptime”后,在天数大于1和天数小于1时的数据格式不一样引起的。

附上源码:

  1. $arRuntime =explode(","exec('uptime'));
  2.         if(stripos($arRuntime[0],"day") === false){
  3.             //$arRuntime[0] = "10:01:01 up 19:29"
  4.             $run_days = 0;
  5.             $temp_times = explode(" "$arRuntime[0]);
  6.             $run_time = explode(":",$temp_times[3]);
  7.         }else{
  8.             //$arRuntime[0] = "10:01:01 up 1 days" $arRuntime[1] = "19:29"
  9.             $temp_days = explode(" "$arRuntime[0]);
  10.             $run_time = explode(":"$arRuntime[1]);
  11.             $run_days = $temp_days[3];
  12.         }
  13. $runtime = $run_days."天".$run_time[0]."小时".$run_time[1]."分钟";
  14. echo $runtime;

其实这个小代码不复杂,只是因为昨天重启服务器导致天数小于1,为了避免再次踩坑,所以在此做个笔记,需要的朋友也可以直接拿走。


2018年5月4日更新上述代码第二行中“days”改成“day”,因为天数为1的时候,返回数据是“1 day”只有天数大于1的时候比如2天,返回数据才是“2 days”。Linux写uptime的人也是好坑啊!

源码二:(这个源码是从LinuxIDC上面看到的,也收藏下)

  1. private function sys_linux()
  2.     {
  3.         if (false === ($str = @file("/proc/uptime"))) return false;
  4.         $str = explode(" ", implode(""$str));
  5.         $str = trim($str[0]);
  6.         $min = $str / 60;
  7.         $hours = $min / 60;
  8.         $days = floor($hours / 24);
  9.         $hours = floor($hours - ($days * 24));
  10.         $min = floor($min - ($days * 60 * 24) - ($hours * 60));
  11.         if ($days !== 0) $res['uptime'] = $days."天";
  12.         if ($hours !== 0) $res['uptime'] .= $hours."小时";
  13.         $res['uptime'] .= $min."分钟";
  14.         return$res;
  15.     }

用的时候只需要两行:

  1. $sysInfo = $this->sys_linux();
  2. $runtime = $sysInfo['uptime'];

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!