Server Online-Offline Check

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Server Online-Offline Check

Beitrag von easygo »

Hi, vielleicht kennt ihr das Problem. Auf eurem Board wird fremder Script
ausgeführt, aber manchmal ist die Source URL down oder net erreichbar.
Dann gibt das unschöne Kreuze bzw. lange Ladezeiten bis Timeout.

Jo, wie lässt sich so was vermeiden?

Ich denk mal, am besten mit nem Script, der die Source URL vorher abfragt.
Blos wie lässt sich das Ganze für phpbb umsetzen?

Letzter Stand ist, das Script in eine status.php zu packen, die Datei zu includen
und der URL voranzustellen, aber das Ergebnis sind nur Kreuze...

Code: Alles auswählen

<?php 

$live = '<img src="' . $images['icon_online'] . '" alt="' . $lang['Online'] . '" title="' . $lang['Online'] . '" border="0" />';
$dead = '<img src="' . $images['icon_offline'] . '" alt="' . $lang['Offline'] . '" title="' . $lang['Offline'] . '" border="0" />';
$purl = parse_url($url); 
$p_link = str_replace("http://", "", $url); 
$s_link = str_replace("/check.txt", "", $p_link); 
list($addr,$port)= explode (':',"$s_link"); 
if (empty($port)){ 
$port = 80; 
} 
$churl = @fsockopen(server($addr), $port, $errno, $errstr, 7); 
if (!$churl){ 
header("Location: $dead"); 
} 
else { 
if ($socket = fsockopen($purl['host'], empty($purl['port'])?getservbyname($purl['scheme'],'tcp'):$purl['port'], &$errno, &$errstr, 5))
{ 
fputs($socket, "HEAD $url HTTP/1.0\r\n\r\n"); 
$response = fgets($socket, 16); 
fclose($socket); 
if(preg_match("/^HTTP\/\d+\.\d+\s+200/", $response)) 
{ 
header("Location: $live");
exit; 
} 
else {
header("Location: $dead");
exit; 
}
}
} 
function server($addr){ 
if(strstr($addr,"/")){$addr = substr($addr, 0, strpos($addr, "/"));} 
return $addr;  
}
?>
Vielleicht gibts ja schon ne richtig gute Lösung für...
Ich hab nur nix gefunden dazu.

Wär super, wenn wer weiterhelfen kann.
Less
Mitglied
Beiträge: 74
Registriert: 06.09.2003 12:49

Beitrag von Less »

Vielleicht hilft die das hier weiter?

Code: Alles auswählen

<?php
$addr = "www.domain.de";

// Testen, ob Server Online:
$churl = @fsockopen($addr, 80, $errno, $errstr, 12);
if (!$churl) { echo("offline"); } else { echo("online"); };
?>
Viele Grüße!

Less
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Jo auf jeden Fall! :) Danke

und ich wollte den Thread schon löschen...

Habs grad erfolgreich getestet mit/ohne Phantasie-Server.

War nur ein ; zuviel vor ?>
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“