Sun, 09 Mar 2003 09:39:42 +0100 brugte Niels Andersen 42 linier på at
fortælle dette til dk.edb.system.unix:
>> Det er sikkert mig der er dum, men jeg fatter simpelthen ikke regular
>> expressions...
>Det er heller ikke lige det nemmeste du kan lave med PHP. :)
Nej, det fandt jeg ud af...
>> Hvis man nu i et php-script laver en "exec (uptime)", hvordan får man så
>> lagt oppetiden ud i nogle variable ved navn $dage, $timer og $minutter?
>Jeg ville i stedet kigge i filen "/proc/uptime".
[...]
Skønt! Så fik jeg det til at virke med
$fd = fopen ("/proc/uptime", "r");
$buffer = fgets($fd, 4096);
fclose ($fd);
$uptime = substr ($buffer, 0, strpos ($buffer, " "));
$days = floor($uptime/(60*60*24));
$uptime = $uptime%(60*60*24);
$hours = floor($uptime/(60*60));
$uptime = $uptime%(60*60);
$mins = floor($uptime/(60));
$secs = $uptime%(60);
$uptime = "$days days, $hours hours, $mins minutes and $secs seconds
($days:$hours:$mins:$secs).\n";
>> Jeg synes det er ligemeget hvad jeg prøver, så får jeg at vide at der er
>> fejl i linien...
>Så ville det være en god ide at vise et af dine bedste forsøg. :)
>Måske er det blot en simpel lille fejl. Så kan vi fortælle dig hvad din fejl
>var, i stedet for at kigge på en helt ny løsning. :)
Hehe... Ja, jeg opdagede jo at regular expressions i php skal pakkes ind i
en preg_match eller preg_match_all, og så forsøgte jeg mig med
$uptime = exec (uptime);
preg_match_all ("/up (\d+) days, (\d+):(\d+)/", $uptime, $out);
$days = $out[1];
$hours = $out[2];
$mins = $out[3];
men det skete der ikke meget ved... "echo $out" gav blot outputtet "Array",
og jeg forsøgte for sjov at gennemskue den ved
for (i = 0; i <= 10; i++) {
echo "$i: $out[i]<br>\n";
}
men de var alle sammen tomme - og så opgav jeg (klokken var 4 om natten)...
--
Lars Rander,
www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)
Det kræver ærlighed at sælge elastik i metermål. (Storm P.)