• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Seite umleiten wenn Server down.

Nightmare25

Neues Mitglied
Hallo zammn,

ich bin quasi ein HTML Amateur bzw. habe alles was HTML oder PHP angeht im Crashours bzw. per Google autodedaktisch selbst angeeignet aber derzeit komme ich bei einem Problem nicht weiter.

Ich bin Mitbetreiber einer Clanseite die auf Skripts von Clanintern.de zugreift. Ist diese Seite down (was relativ häufig passiert) so würde ich gerne auf eine selbst gestaltete Seite zugreifen, weil unsere Hompage dann recht häßlich aussieht.

Nun brauche ich eine Umleitung die auf der Abfrage basiert "Ist Clanintern.de erreichbar" ? Diese Zeile sollte ich quasi nur oben anführen und dann sollte er umleiten auf eine Seite die aber auf dem Server liegt, quasi eine ServerDown.html wo ich dann ein paar Bildchen einfügen kann etc.

Fürn bissl Hilfe wäre ich dankbar.

Habe da was aus unserer Seite kopiert, ginge es beispielsweise so ?

<?php

function getAvailability($server)
{
if (!($sock = fsockopen($server, 80, $errno, $errstr, 5)))
return false;

fputs($sock, "HEAD / HTTP/1.0\r\nHost: $server\r\n\r\n");

while (!feof($sock))
$tmp = fgets($sock, 1024);

fclose($sock);
return true;
}

$server = "www.clanintern.de";
$test = @getAvailability($server);

if($test) include("http://www.clanintern.de");
else echo "<p>clanintern.de ist im Moment nicht verfügbar!</p>";
?>

Das letzte müsste dann doch nur eine Weiterleitung sein auf eine Datei die auf dem Server liegt oder ?
 
Zuletzt bearbeitet:
Hallo.

Ich glaube mit deinem PHP Script bist du im HTML Bereich falsch.
Im PHP Bereich würdest du bestimmt mehr Antworten bekommen.

Gruss
Elroy
 
also meiner meinung is das nicht mit html, php und JS auf keinen fall möglich. Da der User ja auf keinen fall irgendwie zu den Datein kommt. Wenn "nur" der Apache abstürzt und der Server immernoch online ist will ich nicht beschwören das es nicht doch irgendwie geht. Aber wie gesagt mit html, php und JS hast du keine Chance

Gruß Phil
 
also meiner meinung is das nicht mit html, php und JS auf keinen fall möglich. Da der User ja auf keinen fall irgendwie zu den Datein kommt. Wenn "nur" der Apache abstürzt und der Server immernoch online ist will ich nicht beschwören das es nicht doch irgendwie geht. Aber wie gesagt mit html, php und JS hast du keine Chance

Gruß Phil

Ich bin mit nicht sicher ob du die Frage überhaupt verstanden hast.
Natürlich ist das mit php möglich.

Meine Kenntnisse sind nur nicht gut genug um hier zu helfen.

Gruss
Elroy
 
Es geht ja darum den Status einer anderen Seite zu prüfen, ob diese erreichbar ist. Und dafür reicht das im Eröffnungstopic stehende Script eigentlich aus. Ähnliche gibt es wenn man weiter sucht im Netz. Dafür braucht man eine serverseitige Webprogrammiersprache wie php oder perl oder ruby oder ähnliches. Nicht JavaScript, nicht HTML.
 
Vielleicht habe ich die Fragestellung auch so gestellt das es zu verwirrungen kam.

Also nochmal. Eine Hompage auf Server X gelagert benutzt Scripts eines anderen Dienstes. Jetzt ist dieser Dienst leider hin und wieder offline, somit sieht die Hompage gelinde gesagt sehr unschön aus sprich HTML bzw. PHP Fehlermeldungen. Ich will dem Besucher den Anblick ersparen und auf dem Hompageserver eine kleine HTML bzw. PHP Datei schreiben das wenn der Dienst weg ist quasi ein weisser Browser kommt mit ner Grafik und "uups ... wartungsarbeiten".

Dazu müsste die Abfrage ob Dienst da ist oder nicht quasi ganz vorne stehen, ich glaube die Index.html oder wie die heisst ist das, und wenn er weg ist halt die Ausfallseite. Die Datei mit der Umleitfunktion liegt "nicht" auf dem Server der weg sein könnte, würde ja keinen Sinn machen.

Jetzt ist unsere Seite ein lustiges Völkchen aus PHP und HTML was ich eventuell zu 15% kapiere da ich selbst schon erfolgreich Änderungen vorgenommen habe, nur diese Umleitung ist für mich bömische Dörfer.

Da der PHP Code im Erstellerposting ja garnichtmal so verkehrt zu sein scheint müsste wohl anstelle des ECHO befehls der include befehl herhalten, nur das weiss ich halt nicht genau.
 
Ich hatte deine Beschreibung schon richtig verstanden :)

Es stimmt, die letzten beiden Zeilen sind nicht so ganz stimmig. Wenn Du eine Weiterleitung auf "www.clanintern.de" einleiten willst, verwende header().

Code:
if($test) header("Location: http://www.clanintern.de");
    else echo "<p>clanintern.de ist im Moment nicht verfügbar!</p>";

Wie ich aus deiner Beschreibung lese, willst Du aber nicht wirklich dorthin weiterleiten? Du willst die eigene Webseite anzeigen lassen. Dann darfst Du keine Weiterleitung vornehmen, wenn der Server verfügbar ist sondern wenn er nicht verfügbar ist. Also ersetze diese beiden letzten Zeilen durch:

Code:
if(!$test) {
 echo "clanintern.de ist down.";
 exit();
}

Und das zusammen mit der Funktion musst Du als allererstes in deinem Quellcode einfügen. Durch das "exit" wird ausgeschlossen, dass irgendwas was nach dem echo kommt ausgegeben wird. Der Besucher sieht folglich nur eine Seite mit dieser echo-Ausgabe.
 
Puh...sieht für mich so aus als wenn dann nur ein Text ausgegeben wird "Clanintern ist down. Ich will aber wenn Clanintern "down" ist eine selbst gestrickte Seite anzeigen lassen die auf dem Server liegt (nicht bei clanintern.de) also beispielsweise eine blabla.html oder bei uns heissen die Teile meinst *.inc und dort was völlig neues coden wie ich schon erwähnte blank page, 2 Jpegs und dann Text drunter Wartungsarbeiten.

Werde das am Sonntag mal in Ruhe testen, habe nur immer angst was kaputt zu machen.
 
Hi
Header ist dafür schon die richtige Lösung.

Ich kenne jetzt leider den richtigen Code nicht im Kopf.
Aber du könntest abfrage ob ein Bild von Clanintern verfügbar ist ... ist es nicht verfügbar bist du sicher der server ist down.
Ist es verfügbar weist du dann noch immer nicht ob z.B. nur deren Datenbank abgestürzt ist. Aber es ist zumindest ein Anfang.
 
Grmbl... :(

So, auf einem etwas unfeinem weg hat eine Umleitung funktioniert, allerdings kann ich nicht überprüfen ob die Umleitung auch weg wäre wenn der Server wieder da wäre. Jetzt habe ich mir mal was aus einem anderem Forum geklaut was eigendlich schlüssig ist aber es funktioniert nicht. Der Browser lädt und lädt und rigendwann kommt dann die typische Browsermeldung "Der Server unter xxx.clanintern.de braucht zu lange, um eine Antwort zu senden."

Also ich habe in die INDEX Datei folgendes reingebastelt und es steht ann allerster Stelle :

Code:
<?php
$check_url = "http://xxx.clanintern.de"; // URL zum überprüfen
$offline_url = "http://www.xxxclan.de/inc/ServerDown.php"; // URL zum Weiterleiten wenn Seite down ist
$connection = fsockopen ($check_url, 80);
if (!$connection)
{
@header ("Location: ".$offline_url); exit;
}
else
exit;
?>
Sprich er will jetzt im Moment nicht umleiten, nur wieso ?!
 
Dann mach mal ein klassisches Debugging ..

Kommentier die exits() und die header() aus und gib statt dessen einen Text aus (echo "test";). Wenn Du darüber merkst, dass die if-Bedingung richtig funktioniert (sprich: Server ist nicht erreichbar), hinterfrage wieso die header-Weiterleitung nicht klappt. Prüfe dazu, ob die in $offline_url angegebene URL überhaupt erreichbar ist (einfach im Browser aufrufen). Ist sie das könnte das Problem auch mit dem Weiterleitungsziel zusammenhängen. Prüfst Du dort ggfs. auch, ob der externe Server erreichbar ist? Wenn ja, dann endet das in einer Endlosschleife die kein Browser beenden kann.
 
So ich habe jetzt nochmal umgestellt. Jetzt startet er eine weiterleitung nach aufruf des Scripts auf die richtige Datei. Nur ich befürchte derzeit das es ihm relativ Schnuppe ist ob
der zu überprüfende Serve da ist oder nicht. Habe einfach mal die zu überprüfende Seite geändert auf eine die existiert und da ist z.bsp. html.de und siehe da er leitet dennoch um.

Ha ha .... es läuft :D

Zuerst hat mich gehindert das die Datei INDEX.HTML hieß, wenn ich dort natürlich PHP aufrufen will kommt da wohl alles durcheinander. Jetzt habe ich den HTML scheiss der dort stand ausgelagert in eine weitere Datei (also der Rest der Page wenn SERVER nicht Down wäre) und die Datei nach PHP umbenannt.

Die Abfrage habe ich erstmal mit dem ECHO Befehl getestet und für FSOCK jeweils eine Seite angegeben die Online ist und eine die nicht erreichbar ist. Die Textausgaben funktionierten und später dann auch die Umleitung. Mit dem Quellcode hier :

Code:
<?php
$check_url = "XXX.clanintern.de"; // URL zum überprüfen
$connection = @fsockopen ($check_url, 80);

if (!$connection)
{
header( "refresh:5;url=http://www.XXXXXX.de/inc/ServerDown.php" );
echo 'Sie werden weitergeleitet, wenn nicht klicken Sie dazu <a href="http://www.XXXXX.de/inc/ServerDown.php"> hier<aa ';
}
else
{
header( "refresh:5;url=http://www.XXXXX.de/inc/startup.html" );
echo 'Seite ist wieder erreichbar....';
exit();
}
?>
Jetzt habe ich eigendlich nur noch ein einziges Problem, diese FSOCK Überprüfung dauert einfach zu lange. Ich weiss leider nicht wie ich da ein Timeout oder ähnliches hinbekomme.
 
Zuletzt bearbeitet:
Zurück
Oben