Just nu i M3-nätverket
Jump to content

Uptime +php +apache +win


NoName2

Recommended Posts

Hej!

Undrar om det finns ngt sätt att kunna se sin servers uptime på ???

Skulle vilja skriva ut den på min hemsida.

 

Link to comment
Share on other sites

Japp har redan laddat hem "uptime.exe" men kan inte få ut värdet till sidan på ngt viss. Testat massa olika, men det enda som händer är att sidan står och laddar och laddar men blir aldrig klar. skulle vilja ha lite kod Ex:

$uptime = `uptime`;

$pattern = '/^.*( \d+ day\(s\), \d+ hour\(s\), \d+ minute\(s\), \d+ second\(s\)).*$/isD';

$result = preg_replace( $pattern, '$1', $uptime );

 

echo "Uptime: $result<br>\n";

 

har jag testat men utan framgång .... mer förslag?

 

Link to comment
Share on other sites

GetTickCount()???

 

Vill se lite klar kod, vet inte vad jag skall med din EXE fil till så jag laddar inte hem den. GetTickCount finns väl inte i PHP lr???

 

 

 

Link to comment
Share on other sites

Thomas Tydal

> GetTickCount finns väl inte i PHP lr???

 

Nej, det finns i Windows, därav exe-filen.

 

 

Link to comment
Share on other sites

Hmm det är ju inte C/C++ jag skall koda heller...

Eller är det jag som är helt ute och cyklar???

Fattar inte vad jag har för nytta av den fortfarande.

 

Det jag vill är ju att kunna se min server uptime på min hemsida....

 

 

 

Link to comment
Share on other sites

Ett alternativ (som skulle kunna vara lite billigare, jag har inte räknat på det) skulle kunna vara att slå på server-status i apache så att den är åtkomlig från localhost (där php:n kör).

 

Att parsea ut uptime ur en sån här output är rätt lätt http://www.php.net/server-status

 

Link to comment
Share on other sites

hmm okej ;D

ser ju rätt bra ut ...

 

Då är min nästa fråga hur maskar jag ut saker ur den tro ;D

 

Link to comment
Share on other sites

Thomas Tydal

> Hmm det är ju inte C/C++ jag skall koda heller...

 

Nej, så därför gjorde jag det åt dig. Allt du behöver göra nu är ju att köra den färdiga exe-filen. Säg bara till om du vill att det ska visas på ett annat sätt så kan jag fixa det.

 

 

[inlägget ändrat 2003-06-07 00:32:26 av Thomas Tydal]

Link to comment
Share on other sites

Men vet fortfarande inte hur jag skall kunna läsa in det till min hemsida... Ser inte att det är ngn skillnad på din fil och uptime.exe ??

 

Link to comment
Share on other sites

Thomas Tydal

> Men vet fortfarande inte hur jag skall kunna

> läsa in det till min hemsida...

> Ser inte att det är ngn skillnad på din fil och

> uptime.exe ??

 

Jag trodde problemet var att uptime.exe rapporterade upptiden på ett sätt som du inte ville ha det och inte lyckades ändra på.

 

Men hur som helst:

 

echo("Uptime: " . system("ut.exe"));

 

 

Link to comment
Share on other sites

\\HATE_SERVER has been up for: 16 day(s), 21 hour(s), 20 minute(s), 4 second(s) Upime: \\HATE_SERVER has been up for: 16 day(s), 21 hour(s), 20 minute(s), 4 second(s)

 

Är det jag får ut på sidan nu, och det är ju helt okej ;D

Men skulle vilja ändra om det lite så det typ bara ser ut så här:

"Server Uptime: 12d 2h 23min"

 

Men inte riktigt säker på hur jag skall ta emot all information. Antar att allt kommer som en lång sträng nu lr?

 

Link to comment
Share on other sites

Thomas Tydal

> Men skulle vilja ändra om det lite så det typ bara

> ser ut så här: "Server Uptime: 12d 2h 23min"

 

echo("Server Uptime: " . system("ut.exe"));

 

(Ladda ner http://www.tydal.nu/ut.exe på nytt.)

 

 

Link to comment
Share on other sites

Japp gör jag det så ser det ut så här.

 

"16d 21h 35m 12sUpime: 16d 21h 35m 12s"

 

Vet inte varför det kommer två gånger...

 

Link to comment
Share on other sites

Thomas Tydal

Ladda ner filen på nytt. Jag gjorde ändringen du bad om. Funktionen system skriver ut resultatet på sidan. Förmodligen sparar du det även i en variabel som du skriver ut senare. Använd istället den kod som jag skrev i förra inlägget så blir det rätt.

 

 

Link to comment
Share on other sites

Japp nu ser det ut så här:

"16d 21h 40minUpime: 16d 21h 40min"

 

PHP kod:

<?php

echo('Upime: ' . system('ut'));

?>

 

Fortfarande dubbelt, skymt ...

 

Link to comment
Share on other sites

Thomas Tydal

Hmm... 16d 21h 40min skrivs ju ut före "Upime:"... Verkar som att du har något gammalt kvar tidigare i koden?

 

 

Link to comment
Share on other sites

Det här är en start:

<?php
if ($file=fopen("http://www.php.net/server-status", "r")) {
while($line=fgets($file)) {
   if (preg_match("/^Server uptime/", $line)) {
      echo $line;
      break;
   }
}
}
?>

(naturligtvis får du byta ut www.php.net mot localhost också).

 

Med en lite mer avancerad regexp är det en kakbit att sortera ut själva siffrorna. Se det som en övning i hur regexpar funkar, det är en kunskap du aldrig kommer att ångra att du har (utom när du av nån anleding inte får/kan använda dem till ett typiskt regexp-problem).

 

Edit:

Äsch, hade inget att göra, nedanstående gör inte anspråk på att vara världens vackraste regexp men den funkar och visar ungefär hur jag tänkte. Sluta läs nu om du vill fundera själv:

...
   if (preg_match("/^Server uptime[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+).*/", $line, $matches)) {
      echo $matches[1]."d".$matches[2]."h".$matches[3]."m".$matches[4]."s";
...

 

(Nu kan du börja läsa igen.)

 

Edit igen:

Motivet till att använda server-status vid sidan om att det är lite mer udda är naturligtvis att det blir lite mer plattformsoberoende. Förr eller senare vill du se hur mycket mer du får ut av datorn på t.ex php+apache+linux och då är det ju roligare att överlåta plattformsberoende grejjer till Apache-utvecklarna.

Fast framförallt tog jag med den här lösningen för att det har varit rätt många som frågat hur man plockar info från andra sidor den senaste tiden.

[inlägget ändrat 2003-06-07 02:58:18 av fhe]

Link to comment
Share on other sites

Ett snyggare regexp som gör samma sak är:

 

preg_match("/^Server uptime\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)/", $line,$matches)

 

Men jag tycker nog att en bättre lösning är att köra en split, efter att ha matchat mot "Server uptime":

 

if (preg_match("/(^Server uptime.*$)/", $line,$matches)) {
$siffror=preg_split("/\D+/",$matches[1]);
}

 

Siffrorna finns nu i arrayen $siffror.

 

Och detta från en php-n00b som mig :))

(använder hellre perl)

 

 

[inlägget ändrat 2003-06-07 08:42:17 av MD]

Link to comment
Share on other sites

Nu är det löst....

Verkar som att (system) med skriver ut det på samma sätt som echo ;D

 

så här är den nya koden.

 

<?php

system('ut');

?>

 

hehe och den visar:

"17d 5h 50min" tack skall ni alla ha...

 

Link to comment
Share on other sites

STOP STOP STOP !!

 

Lugna å fina nu .... får inte server-info att fungera...

 

Antar att jag måste ta fram dessa rader i confen till apache ....

 

#

# Allow server status reports generated by mod_status,

# with the URL of http://servername/server-status

# Change the ".sjodahl.org" to match your domain to enable.

#

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from .localhost

</Location>

 

Men lyckas inte att få det att fungera ändå...

 

Åtkomst address:

http://localhost/server-status

 

Har även tagit fram denna raden:

LoadModule status_module modules/mod_status.so

 

Är det ngt mer jag måste göra ????

 

Link to comment
Share on other sites

Får detta meddelandet:

 

Forbidden

You don't have permission to access /server-status on this server.

 

 

--------------------------------------------------------------------------------

 

Apache/2.0.45 (Win32) PHP/4.3.1 Server at localhost Port 80

 

Link to comment
Share on other sites

Hmm nu fungerar det men ändrade till:

 

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from all

</Location>

 

Men vet inte om det är bra ur säkerhets synpunkt???

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...