Avatar billede hejole Nybegynder
03. maj 2003 - 22:32 Der er 17 kommentarer og
1 løsning

Webserver, backupserver, backup-backupserver script

Jeg aner ikke noget om scripting, men har forsøgt at flække følgende script sammen.
Hvordan burde det se ud?
Jeg går ud fra det måske er min else if der fejler...

<?php
$primary = @fsockopen("primary_IP", 80, $errno, $errstr, 5);

if ($primary) {
@header("location: http://primary_IP");
} else
$secondary = @fsockopen("secondary_IP", 80, $errno, $errstr, 5);
{ if ($secondary) {
        @header("location: http://secondary_IP");
      } else {
        @header("Location: http://third_IP");
      }
}
?>

Scriptet skulle gerne starte med at tjekke om primary eksisterer og så gå dertil hvis den gør, hvis ikke, så redirecte til secondary. I tilfælde af hverken primay eller secondary eksisterer skal man så blive smidt hen til third_IP (da denne server ALTID er online).
Avatar billede hejole Nybegynder
03. maj 2003 - 22:33 #1
Mit problem lige nu er at scriptet uanset hvad smider mig hen til third_IP-
Avatar billede schaefner Juniormester
03. maj 2003 - 22:35 #2
Prøv:

<?php
$primary = @fsockopen("primary_IP", 80, $errno, $errstr, 5);
if ($primary) {
    header("location: http://primary_IP");
} else {
    $secondary = @fsockopen("secondary_IP", 80, $errno, $errstr, 5);
    if ($secondary) {
        header("location: http://secondary_IP");
    } else {
        header("Location: http://third_IP");
    }
}
?>
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 22:35 #3
if ($primary) {
@header("location: http://primary_IP");
} else {
$secondary = @fsockopen("secondary_IP", 80, $errno, $errstr, 5);
if ($secondary) {
        @header("location: http://secondary_IP");
      } else {
        @header("Location: http://third_IP");
      }
}
?>

er da bedre ;)
Avatar billede tipsen Nybegynder
03. maj 2003 - 22:38 #4
if ($primary) {
  @header("location: http://primary_IP");
  exit();
} else {
  $secondary = @fsockopen("secondary_IP", 80, $errno, $errstr, 5);
  if ($secondary) {
    @header("location: http://secondary_IP");
    exit();
  } else {
    @header("Location: http://third_IP");
    exit();
  }
}
?>

er da (endnu) bedre ;)
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 22:42 #5
hvorfor, tipsen?
Avatar billede hejole Nybegynder
03. maj 2003 - 22:44 #6
erikjacobsen << hvorfor er dit bedre?
schaefner, dit virker upåklageligt.
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 22:49 #7
Mit er ikke bedre end schefners.
Avatar billede schaefner Juniormester
03. maj 2003 - 22:55 #8
og mit var et svar
Avatar billede hejole Nybegynder
03. maj 2003 - 22:55 #9
Så erikjacobsen, dit er bedre pga. @, og dit tipsen, skulle være bedre pga. exit()...
Hvad gør exit() da, siden det skulle være bedre?
erikjacobsen << Så vidt jeg kan forstå gør det absolut ingen forskel om der er @ foran header, da disse ligger inde i else if funktionen. Mens der selvfølgelig bør være foran fsockopen da at ignorere dennes fejlmeddelelse er afgørende for den videre afvikling af scriptet.

Sejren går til schaefner, så
schaefner << post et svar så er der point.
Avatar billede hejole Nybegynder
03. maj 2003 - 22:56 #10
Så var der point :)
Fortsat god weekend!
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 23:01 #11
schaefner og mig svarede samtidigt. Jeg sagde blot at mit er bedre
end spørgerens oprindelige.
Avatar billede tipsen Nybegynder
03. maj 2003 - 23:01 #12
Erik: Der er ingen grund til at resten af scriptet skal eksekveres efter en redirect (i dette tilfælde) - og netscape skulle efter hvad jeg kan finde på nettet have en tendens til at være lidt følsom, hvad dette angår.

hejole: Det er korrekt, at @ foran header() er overflødigt.
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 23:06 #13
Det kommer da an på, tipsen, om der er mere der skal laves.
Men "elserne" sørger jo ligeså godt for at der ikke udføres mere.

Har du exit() på (og det giver mening - altså der skal ikke
laves andet), kan du få en nemmere struktur ved at fjerne
"elserne" - så er det fx nemmere at tilføje fjerde IP.
Avatar billede tipsen Nybegynder
03. maj 2003 - 23:14 #14
Erik: Vi er vist helt enige mht brugen af exit() - nu håber jeg bare de andre også har forstået at den ofte bør bruges i praksis! Mht. at fjerne else'erne går jeg udfra du mener, at lave elseif-betingelser i stedet for nestede if-løkker?
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 23:19 #15
nej, hverken else eller elseif. exit() dør den jo.
Avatar billede tipsen Nybegynder
03. maj 2003 - 23:21 #16
øhh...
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 23:23 #17
if (...) {
  header();
  exit();
if (...) {
  header();
  exit();
}
//osv
Avatar billede tipsen Nybegynder
03. maj 2003 - 23:25 #18
ahh - ja det er selvfølgelig helt ligegyldigt.
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