Avatar billede hejole Nybegynder
02. maj 2003 - 20:22 Der er 18 kommentarer og
1 løsning

Server-tjek og redirect 2

Jeg har brug for et script som kan tjekke om min server (www2.eksempel.dk) er online, hvis den er så redirectes der til den, hvis ikke serveren (www2.eksempel.dk)er online, så redirectes der til www1.eksempel.dk.

Jeg placerer scriptet så det altid er online (www.nogetandet.dk/redirect/index.php), og lægger det som index-fil i en dertil indrettet mappe. Via GratisDNS sætter jeg en URL-redirect til at gå til scriptet.

Jeg giver 100 point, men afleverer dem denne gang først når det virker ;-)

Se (da dette ikke virker)
http://www.eksperten.dk/spm/346974
Avatar billede hejole Nybegynder
02. maj 2003 - 20:23 #1
URL-redirecten (vha GratisDNS) er selvfølgelig www.eksempel.dk :-)
Avatar billede hejole Nybegynder
02. maj 2003 - 20:25 #2
Dvs. at det er en A Record URL-redirect. Dvs. www.eksempel.dk viser hen til www.nogetandet.dk/redirect/index.php

Så kan jeg vist ikke forklare det bedre ;-)
Avatar billede melange Nybegynder
02. maj 2003 - 20:31 #4
noget i den her stil ?

$fp = @fopen("http://www.server1.com","r");
if ($fp) {
    header("Location http://www.server1.com");
} else {
    header("Location http://www.server2.com");
}
Avatar billede jakoba Nybegynder
02. maj 2003 - 20:32 #5
<?php
$fp = fsockopen("http://www2.eksempel.dk/lillefilduhar.txt", 13, $errno, $errstr, 5);
if ($fp) {
    header("location: http://www2.eksempel.dk");
    fclose( $fp );    // husk at lukke den igen
} else {
    header("location: http://www1.eksempel.dk");
}
?>

filen 'lillefilduhar.txt' skal blot indeholde et enkelt blanktegn. og den skal chmod'es så den kan læses udefra via http:
Avatar billede jakoba Nybegynder
02. maj 2003 - 20:35 #6
Ups der skal vist lukkes før redirect:
    fclose( $fp );    // husk at lukke den igen
    header("location: http://www2.eksempel.dk");
Avatar billede melange Nybegynder
02. maj 2003 - 20:36 #7
schaefner << jeg gad egentlig godt at vide hvor meget "antal spørgsmål pr. dag" ville falde hvis alle gad lave en søgning inden de spurgte :)

Her ville næsten blive kedeligt :)
Avatar billede tipsen Nybegynder
02. maj 2003 - 23:34 #8
melange: Så havde Eksperten været død - det er jo ikke fordi her foregår nye revolutionerende ting - så når folk lærer at søge (eller ikke længere er dovne) kan Eksperten lukke ned. Jeg gætter på, at Eksperten lever længe...
Avatar billede hejole Nybegynder
03. maj 2003 - 01:20 #9
Beklager der er ingen af dem der virker.
De virker fint hvis man ikke skal bruge else-delen af scriptet.
Det vil sige, hvis jeg benytter fsockopen("http://eksempel.dk") så redirectes jeg også fint til if ($fp) { header("location: http://eksempel.dk"); }
hvis eksempel.dk ikke findes, så virker else-delen ikke!
Dvs jeg får flg.
Warning: fsockopen() [function.fsockopen]: php_hostconnect: connect failed...
Warning: fsockopen() [function.fsockopen]: unable to connect to XXX.XXX.XXX.XXX
Warning: Cannot modify header information - headers already sent by
Avatar billede melange Nybegynder
03. maj 2003 - 01:26 #10
sæt et @ foran "header()" så det bliver til:
Det burde forhindre at PHP udskriver fejl, og dermed forhindre PHP i at sende tekst, før den sender flere headers.

<?php
$fp = fsockopen("http://www2.eksempel.dk/lillefilduhar.txt", 13, $errno, $errstr, 5);
if ($fp) {
    fclose( $fp );    // husk at lukke den igen
    @header("location: http://www2.eksempel.dk");
} else {
    @header("location: http://www1.eksempel.dk");
}
?>
Avatar billede tipsen Nybegynder
03. maj 2003 - 01:33 #11
Prøv i stedet:

<?php
$fp = @fsockopen('http://www2.eksempel.dk/lillefilduhar.txt', 13, $errno, $errstr, 5);
if ($fp) {
    fclose( $fp );    // husk at lukke den igen
    header("location: http://www2.eksempel.dk");
} else {
    header("location: http://www1.eksempel.dk");
}
?>
Avatar billede melange Nybegynder
03. maj 2003 - 01:35 #12
hejole << blah. lyt ikke til mig. Tipsen har ret :)
Avatar billede hejole Nybegynder
03. maj 2003 - 01:47 #13
Yeehaw!!
@'et var det magiske touch! Efter en masse roden rundt har jeg et script der virker på et af mine webhoteller, dog ikke på det andet...
Det er jo lidt ærgerligt, men så længe det virker bare et sted.
Host hvor det ikke virker: b-one
Host hvor det virker: cliche.dk
Sært....
Nåmen scriptet kom til at se sådan her ud:
<?php
$fp = @fsockopen("www.minserver.dk/mitsite", 80, $errno, $errstr, 2);
if ($fp) {
    @header("Location: http://www.minserver/mitsite");
} else {
    @header("Location: http://www.mitwebhotel.dk/mitsite");
}
?>
melange du får de 40, jakoba 20 og resten til mig selv da jeg selv måtte rode med det et par timers tid.

Tak for hjælpen
Avatar billede hejole Nybegynder
03. maj 2003 - 01:51 #14
Så "@" meddeleler php at det er en "funktion" og ikke header?
Avatar billede hejole Nybegynder
03. maj 2003 - 01:58 #15
Scriptet virker også på fairsite's servere og nu også b-one's lader til at jeg ikke kunne få IE til at opdatere før. Kewl nok. Tak for hjælp gutter og gutinder.
Avatar billede hejole Nybegynder
03. maj 2003 - 02:09 #16
Post svar hvis i vil ha nogen points... :-) Så må i jo også lige sige til hvis i mener det er en forkert måde at fordele point på. Da jeg er fhv. ny her, så ved jeg ikke om der findes en fast kotume for fordeling?
Avatar billede tipsen Nybegynder
03. maj 2003 - 10:37 #17
@ fortæller PHP at den skal skrotte evt. fejlmeddelelser - dvs. ikke udskrive dem til skærmen! I ovenstående betyder det, at hvis fsockopen() fejler får du udskrevet fejlen - og det var den udskrivning der bevirkede, at dit senere header-kald ikke længere kunne udføres, da der så var sendt tekst til browseren.

Mener desuden, at fsockopen() afhænger af safe-mode indstillingerne i php.
Avatar billede melange Nybegynder
03. maj 2003 - 11:45 #18
hejole << jeg vil ikke have nolge points da det (bortset fra den kodestump som du ikke brugte) ikke lykkedes mig at sige noget rigtigt :)
Avatar billede hejole Nybegynder
03. maj 2003 - 13:18 #19
Godt så... Så beholder jeg dem da selv :-)
tipsen << Mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester