Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Erreichbarkeits Checker

  1. #1
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567

    Erreichbarkeits Checker

    Hi@all

    Ich bräuchte ein Script welches überprüft, ob z.B. die Seite www1.homeunix.org erreichbar ist oder nicht. Wenn die Seite erreichbar ist, soll auf sie weitergeleitet werden. Wenn sie nicht erreichbar ist soll auf eine andere Seite geleitet werden.
    Wie mache ich das jetzt? Im grunde ist es ja eine If-Else-Abfrage. Nur hab ich noch keine Idee wie ich das ganze in die Tat umsetzte.

    Cu
    C und C++

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    Also im Prinzip würd ich das jetzt mit Ping machen: (Achtung: Pseudo-Code)
    Code:
    if(ping("www1.homeunix.org"))
    	redirect-to("blah");
    else
    	redirect-to("blarg");
    In PHP kannst du ja auch versuchen die Seite mit fopen zu öffnen.

    c ya,
    Tobias

  3. #3
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi

    Oh cool werde ich gleich mal ausprobieren. Danke.

    Cu
    C und C++

  4. #4
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi

    Leider will das nicht so ganz funktionieren.
    Code:
    Fatal error: Call to undefined function: ping() in /home/andre/www/htdocs/ssl/index.php on line 2
    Welche Möglichkeit gäbe es da nocht?

    Cu
    C und C++

  5. #5
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339

    Talking

    Argh
    Hab doch extra geschrieben Pseudo-Code

    Benutz fopen

  6. #6
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Original geschrieben von tkortkamp
    Argh
    Hab doch extra geschrieben Pseudo-Code

    Benutz fopen
    Whoops

    Eigenen Dummheit. Bin zwar noch nicht so fit in php, zumal ich das für die dümmste Ausrede überhaupt halte, dennoch hätte ich wohl die Augen aufmachen sollen. Naja, ich hab das mal so mit include versucht da fopen irgendwie nicht wollte:
    PHP-Code:
    <?php
        
    if("http://www1.homeunix.org" == true)
            include(
    "http://www1.homeunix.org");
        else
            include(
    "http://www.test.de")
    ?>
    Bin aber noch nicht sicher ob das klaptt, da ich im Moment auch keinen externen Webspace habe um das zu testen muss ich mich da noch gedulden.

    Cu
    C und C++

  7. #7
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo Berufspenner!

    Der Code ist totaler schwachsinn (SORRY)!

    Werd ihn mal auseinanderpfücken und dir sagen was du da verzapft hast:

    ---------------

    PHP-Code:
    if("http://www1.homeunix.org" == true
    Damit überprüfst du ob der String (text) "http://http://www1.homeunix.org" true ist... totaler blödsinn!
    Wenn du überprüfen willst, ob die Seite existiert, dann mußt du das mit einem GET machen...
    Das solltest du mit der Funktion fopen() machen... Dokumentation: http://php.net/fopen !

    So sollte es aussehen...

    PHP-Code:
    //Wenn das öffnen der Index Datei auf http://www1.homeunix.org gelingt dann...
    if ($fh=fopen("http://www1.homeunix.org","r")) {
    ...
    }
    //Datei schließen...
    fclose($fh
    Als nächstes machst du einen include der Seite... ebenfalls nicht sehr schlau!
    Die funktion include (Dokumentation http://php.net/include ) führt ebenfalls einen HTTP GET durch... lädt also quasi die Seite die er unter http://www1.homeunix.org findet auf den Server herunter, auf dem das Skript läuft und bindet es an dieser stelle ein... das verlängert die Ladezeit (minimal) aber der wichtigste grund ist wirklich der schlechte Stil und nebenbei gesagt ist es ein Sicherheitsrisiko, denn wenn sich z.B. auf http://www1.homeunix.org eine index.htm befände, die PHP code enthält, dann würde der auf deinem Server ausgeführt... kann unter umständen böse enden!!!
    Ach so... die include funktion angewandt auf externe Seiten (die sich nicht auf deinem Server befinden) funktioniert nur bei Linux Servern... nicht bei Windows!!!

    Weiterleitungen, machst du lieber mit der funktion header() (Dokumentation: http://php.net/header ). Mit dieser Datei veränderst du den html Header deines Skripts... Um weiterzleiten schreib folgendes:

    PHP-Code:
    header("Location: http://www1.homeunix.org"); 
    Wichtig ist hierbei, daß noch kein output erzeugt worden sein darf, bevor du die Header manipulierst, da sie sonst vom Browser nicht interpretiert werden und PHP einen Fehler ausgibt... es darf auch kein Leerzeichen oder Zeilenumbruch vor den PHP Tags stehen!!!

    Richtig sieht der Code also folgendermaßen aus:

    PHP-Code:
    <?php
       
    //Check ob die Seite Verfügbar ist...
       
    if ($fh=@fopen("http://www1.homeunix.org","r"))
          
    header("Location: http://www1.homeunix.org");
      else
          
    header("Location: http://www.test.de");
      
      
    //Datei schließen... 
      
    @fclose($fh)

    ?>
    Das @ Zeichen verhindert die Ausgabe von Fehlermeldungen!


    Sooo... das war jetzt sehr ausführlich, aber ich hatte gerade Zeit, und wollte als neuer Moderator ein gutes Beispiel geben...

    Normalerweise halt ich mich ein wenig kürzer
    Geändert von Gaert (27-10-2002 um 23:40 Uhr)


  8. #8
    Registrierter Benutzer Avatar von Poseidon238
    Registriert seit
    10.07.2001
    Ort
    München Outback
    Beiträge
    12
    Genau fast das gleiche habe ich auch vor, doch bei mir habe ich den "netten" Nebeneffekt, dass sich alles abartig langsam aufbaut.

    Der Hintergrund ist eine Homepage und das ganze soll in einem Linkarchiv eingebaut sein, d.h. ich habe Links in meiner Datenbank, die ich mit einer Schleife aufliste, dabei checke ich sie, ebenfalls in der gleichen Schleife, ob diese Seiten jeweils off- bzw. online sind.


    <?php
    if(!$urlcheck = @fopen("http://".$daten_lesen["url"],"r")) {
    echo "<span class=zehn><font color=#ff0000>offline</font></span>";
    } else {
    echo "<span class=zehn><font color=#008000>online</font></span>";
    @fclose($urlcheck);
    }
    ?>


    Das besondere Phänomen daran ist, dass ich meine Seite zuhause unter SWAMP entwickle. Bei einer größeren Auflistung (40+ Links), knallt mir mein Apache mit einer Schutzverletzung ab.

    Hab ich irgendwie was falsch gemacht am Code? Will seit ca. 2 Stunden auf die php.net Seite, doch die kann ich leider nicht erreichen. Scheint wohl off zu sein

    Wisst Ihr vielleicht Rat? Hier habe ich auch geschaut und den hierigen Thread gefunden, wo ich meinen Code fast bestätigt bekommen habe, auch wenn ich nur zu 50% das mache, was mein Vorgänger wollte, doch die Basis ist dieselbe... bin verzweifelt

  9. #9
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Den code halte ich für ok. Das Problem ist, dass Du bei JEDEM Seitenaufruf die urls checkst.

    Ich würde den Check und die Anzeige der Links trennen.

    zum Check würde ich ein prl-script basteln und das per cron-job regelmäßig laufen lassen.

    Falls sich nach dem letzten check dennoch ein Link als unbrauchbar herrausstellet, ist's halt so.


    PS: selbst der alte Julius Cäsar war mit der Strategie "Teile und herrsche" schon recht erfolgreich...
    Geändert von elrond (27-11-2003 um 05:49 Uhr)
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  10. #10
    Registrierter Benutzer Avatar von Poseidon238
    Registriert seit
    10.07.2001
    Ort
    München Outback
    Beiträge
    12
    Original geschrieben von elrond
    Den code halte ich für ok. Das Problem ist, dass Du bei JEDEM Seitenaufruf die urls checkst.

    Ich würde den Check und die Anzeige der Links trennen.

    zum Check würde ich ein prl-script basteln und das per cron-job regelmäßig laufen lassen.

    Falls sich nach dem letzten check dennoch ein Link als unbrauchbar herrausstellet, ist's halt so.


    PS: selbst der alte Julius Cäsar war mit der Strategie "Teile und herrsche" schon recht erfolgreich...


    Als ich dann ins Bett ging, habe ich darüber auch nachgedacht, ob das vielleicht auf eine seperate Seite (vielleicht Adminbereich) reinsoll, wo man nur Blockweise (5-10) Adressen prüft.

    Cron-Job wäre was feines, aber ich habe nur einfachen Webspace... na immerhin stimmt mal mein Code... dachte schon, ich wäre blind und doof, aber es besteht noch Hoffnung.

    Danke für die rasche Hilfe (und das noch zu solch später Stunde )...

  11. #11
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Original geschrieben von Poseidon238


    Danke für die rasche Hilfe (und das noch zu solch später Stunde )...
    frühe Stunde

    Eine andere idee ist die, dass du beim Aufruf der Seite prüfst, wie lange die url nicht gechecked worden ist. Das geht, wenn es nicht allzuviele daten sind sicherlich mit einer Datei zu realisieren. Einfacher wäre an dieser stelle latürnich eine Datenbank...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  12. #12
    Registrierter Benutzer Avatar von Poseidon238
    Registriert seit
    10.07.2001
    Ort
    München Outback
    Beiträge
    12
    Original geschrieben von elrond
    frühe Stunde

    Eine andere idee ist die, dass du beim Aufruf der Seite prüfst, wie lange die url nicht gechecked worden ist. Das geht, wenn es nicht allzuviele daten sind sicherlich mit einer Datei zu realisieren. Einfacher wäre an dieser stelle latürnich eine Datenbank...
    Mmmh... daran habe ich auch noch nicht gedacht. Momentan sind es 282, Zahl wachsend, ist aber eben nicht so viel. Datenbank (mySQL) klemmt ja schon dahinter.

    Das mit dem Update, sprich Datumsspezifisch (alle 7 Tagen kontrollieren oder ich schau mir das im Admin-Mode an und aktualisiere das) ist echt nicht schlecht. Werde mir heute abend mal da paar Gedanken drüber machen, wie ich das am besten angehe... aber vielleicht hast auch Du noch weiter Vorschläge

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •