script verkürzen und führende null ausblenden

d3o

Mitglied
so hab mal ein praktisches script gebastelt das die uptime meines linux servers ausgiebt. es funktioniert aber ich hab 2 fragen dazu.
1. kann man es irgendwie verkürzen *G*
2. die uptime in min wird so dargestellt 11:07 d.h. 11 h und 7 min aber mein script zeigt dann 07 an und ich will das er nur 7 anzeigt ohne die führende null.. hier mein script:
PHP:
exec(uptime, $uptimestring);
$time  = preg_split("[up ]", $uptimestring['0']);
$days  = preg_split("[,]", $time['1']);
$hours = preg_split("[:]", $days['1']);

echo "uptime: ".$days['0']." ".$hours['0']." hours ".$hours['1']." minutes";
die ausgabe von 'uptime' auf meinem linux server sieht folgendermaßen aus:
23:40:27 up 15 days, 8:23, 1 user, load average: 0.00, 0.00, 0.00
für alle ohne linux *G*

greetz
 
Verkürzen brauchst nicht, und ich wüßte nicht wie :D

Null weg:
PHP:
foreach ( $hours as $val ) {
  $pos = strpos ( $val, "0" );
  if (is_string ( $pos ) == 1) {
    $hour[]= substr ( $val, 1 );
}

echo $hour[0]." Stunden";
echo $hour[1]." Minuten";

Ist jetzt ungtestet. Kann sein das in der IF Abfrage bei pos auch 1 stehen muss. Must mal testen.

CYA
 
hm jetzt hab ich noch en anderes problem.. wenn keine stunden da sin sieht die ausgabe so aus:

15:44:49 up 16 days, 28 min, 1 user, load average: 0.00, 0.00, 0.00

also die minuten angabe is anders..
hat jemand en php linux uptime script? *G*

naja schreibt mal thx
 
Tut mir Leid, da kann ich dir leider nicht mit diehnen. Ich habe heute morgen auch mal ein bischen rumgespielt, aber es hat nicht richtig funktioniert. Sorry, ich schau mal ob ich nachher ein Script schreiben kann.

Grüße
Fatility
 
so.. falls es jemand interessiert..
für linux sieht des uptime script so aus:

PHP:
function uptime() {
  global $text;
  $fd = fopen('/proc/uptime', 'r');
  $ar_buf = split(' ', fgets($fd, 4096));
  fclose($fd);

  $sys_ticks = trim($ar_buf[0]);
  $min   = $sys_ticks / 60;
  $hours = $min / 60;
  $days  = floor($hours / 24);
  $hours = floor($hours - ($days * 24));
  $min   = floor($min - ($days * 60 * 24) - ($hours * 60));

  if($days != 0) $result = "$days tage ";
  if($hours != 0) $result .= "$hours stunden ";
  $result .= "$min minuten";

  return $result;
}

kann man dann logischerweise mit 'uptime()' einbinden
stammt aus phpsysinfo.. des komplette script gibts auf
http://phpsysinfo.sourceforge.net/ nur zur info..

greetz
 
Das mit der führenden Null müsste auch so gehen
$hours = (int) $hours;
Da er den String dann in eine Zahl umwandelt fällt die 0 weg.

mfg,
ZZZottel
 
danke.. naja hat sich ja erledigt mit dem 2. script das is etwas 'cleverer' als das 1. von mir *G*

trotzdem danke
 
Zurück