Hurtig funktion til at tjekke om server er nede...

Tags:    php

<< < 12 > >>
Jeg skal bruge en HURTIG funktion til at tjekke om en server er nede, jeg bruger iøjeblikket denne:

function CheckIP($IP){
$fp = fsockopen($IP, 80, &$errno, &$errstr, 1);

if ($fp) {

return 1;

} else {

return 0;

}
}

Som i kan se skal den retunere 1 hvis serveren ikke er nede, og 0 hvis den er nede. Det er ip adressen som den skal tjekke efter

mvh.
Lasse Espeholt
webmaster for espeholt.dk



12 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du siger du vil have en hurtigere function.
Dette er den hurtigst mulige funktion der virker 100%.
For at finde andre mulige løsninger der ikke bygger på TCP forbindelser kan du bruge noget mere usikkert, så som UDP (Forudsat der kører en echo service på serverne). Så kan du så godt som selv bestemme hvad timeout skal være.
Hvis du har kontrol med serveren kan du få sat et cronjob til at checke om serverne er oppe f.eks. hvert minut, og gemme dette til en database hvor dit script så bare læser værdierne.


Mvh,

Thomas Nielsen



Det Thomas foreslår er at du kun checker med fx et minuts mellemrum.

Det kan du også göre, uden crontab og uden mysql.
Det du går er at smide resultaterne ind i en fil som du smider timestamp i först.
Den fil der viser stastus læser så timestamp fra filen, og er filen ældre end x minutter,
laves der et nyt check, det skrives til filen med nyt timestamp först, og resultatet vises, og ellers
vises bare det "gamle" reaultat fra filen.

Det svarer til fx at cache resultater som importeres fra anden server pga performance, og jeg har skrevet en asp artikel her om hvordan det göres.

Kan/gidder du ikke at skrive det om til php så sig det, så skal jeg tage mig sammen og skrive en artikel med php versionen at fil cache.

Fordelen er at det er betydeligt hurtigere end at bruge mysql .. og du behöver ikke crontab.
"ulempen" er at hvis du ikke poller display siden, opdateres filen ikke i den tid, men bliver det strax du poller igen.
Det er dog ikke noget problem, og er egentligt faktisk en fordel for hvorfor polle server(ne) efter status i en periode hvor man afligevel ikke bruger resultatet til noget.

Skal du lave statestik, er der ingen vej uden om crontab, og der ville jeg også smide ind i mysql for nemhedsskyld.

Du siger du vil have en hurtigere function.
Dette er den hurtigst mulige funktion der virker 100%.
For at finde andre mulige løsninger der ikke bygger på TCP forbindelser kan du bruge noget mere usikkert, så som UDP (Forudsat der kører en echo service på serverne). Så kan du så godt som selv bestemme hvad timeout skal være.
Hvis du har kontrol med serveren kan du få sat et cronjob til at checke om serverne er oppe f.eks. hvert minut, og gemme dette til en database hvor dit script så bare læser værdierne.


Mvh,

Thomas Nielsen





<< < 12 > >>
t