Just nu i M3-nätverket
Gå till innehåll

Uptime +php +apache +win


NoName2

Rekommendera Poster

Okej dax igen ....

 

if ($file=fopen("http://www.php.net/server-status", "r")) {

while($line=fgets($file)) {

if (preg_match("/^Server uptime/", $line)) {

echo $line;

break;

}

}

}

?>

 

Fungerar men när jag sätter sätter "http://www.sjodahl.org/server-status"

 

istället fungerar det inte ...(sidan blir helt tom)

Men testar jag den genom webbläsaren fungerar det.

 

Länk till kommentar
Dela på andra webbplatser

if ($file=fopen("http://www.sjodahl.org", "r")) {

while($line=fgets($file)) {

// if (preg_match('/^Server uptime:/', $line)) {

echo $line;

// break;

// }

}

}

 

 

Tar jag bort "if" satsen så skriver den ut hela dokumentet men med "if" satsen så blir det bara tomt.

 

Länk till kommentar
Dela på andra webbplatser

Fel post ;D (hehe tur att det är min tråd annars hade jag väl åkt ut här ifrån för spamming ;)

 

if ($file=fopen("http://www.sjodahl.org/server-status", "r")) {

while($line=fgets($file)) {

// if (preg_match('/^Server uptime:/', $line)) {

echo $line;

// break;

// }

}

}

 

skall koden se ut, då skriver den ut precis allt, å tar jag med If satsen så blir det tomt ....

 

Länk till kommentar
Dela på andra webbplatser

å tar jag med If satsen så blir det tomt

 

Skillnaden verkar bero på det här (view source på de bägge):

Apache 1.3.x:

Server uptime:  13 days 13 hours 47 minutes 19 seconds<br>

 

Apache 2.0

<dt>Server uptime:  17 days 11 hours 43 minutes 11 seconds</dt>

 

I det senare fallet (ditt fall) så kommer inte regexpen att matcha eftersom den testar på "^Server" vilket betyder "rad som börjar med Server".

 

Ta bort taket så funkar det nog.

 

Edit: Det ger föresten bara webserverns uptime, inte själva datorn, ofta samma men inte nödvändigtvis

 

 

[inlägget ändrat 2003-06-07 15:36:17 av fhe]

Länk till kommentar
Dela på andra webbplatser

Det löste sig det med....

 

Fast det går fortfarande att komma åt den utifrån, vill du inte det så ställer du förslagsvis in den så här:

 

<Location /server-status>
   SetHandler server-status
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Location>

 

Länk till kommentar
Dela på andra webbplatser

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

 

Jag övervägde den varianten, men jag har kommit fram till att [^0-9] är bättre ur utbildningsperspektiv eftersom man om man lär sig hur [^...] och [...] funkar kan matcha nästan vad som helst när som helst.

 

Jag vill inte säga att jag har rätt men det känns spontant som om man har bättre förutsättningar att lära sig nåt bra om man lär sig de absoluta grunderna först.

 

Split:en var bra, den tänkte jag inte på, det var försent på kvällen :-)

 

 

Länk till kommentar
Dela på andra webbplatser

Om jag skall kunna visa serverns uptime på hemsidan för alla måste det vara typ:

 

"Allow from all" antar jag ?

 

Länk till kommentar
Dela på andra webbplatser

Nej,

För att få det att funka behöver du bara visa uptimen för php som ju går på samma maskin. Därför behöver du bara "Allow from 127.0.0.1". Om du vill att andra utifrån ska kunna surfa till /server-status så ska du ha "Allow from all" men det finns väl ingen anleding.

 

Föresten (och det här är rätt viktigt):

MD hade en version ovanför med split, använd den istället för min regexp. Upptäckte just att regexpen som plockar ut siffrorna ur raden inte fungerar när servern är nystartad, då skriver den nämligen bara "2 seconds" och inte "0 days 0 hours 0 minutes 2 seconds", det gör att splitten funkar mycket bättre (regexpen går att patcha men det är inte värt besväret).

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...