http-server aufm PC - status-Anzeige im Netz?!?

  • Moin,
    also ich hab mir da was überlegt:
    freeware http-server gibt es ja en masse und um den traffic der HP zu reduzieren könnte ich ja ein Teil der DL über den Rechner laufen lassen.
    Wie krieg ich das jetzt hin, das auf ner vorgeschalteten Seite die dann auf die aktuelle IP verweist schon grafisch angezeigt wird, das der server online ist?


    Mein Testentwurf


    Bzw. eher wie zeige ich, dass er offline ist. Online ist ja ganz einfach, indem ich ne grafik einbinde, die auf meinem PC liegt.


    Aber gibt es irgend ein script oder kann einer mir sagen wie ich das schreibe, das abcheckt ob über die IP das Bild gefunden wird und wenn nicht ein alternatives Bild lädt?!


    Momentan zeigt er halt entweder das Bild (vom Rechner geladen) an oder versucht sich zu tode zu laden über die alte IP und gibt dann irgendwann das 'Kreuzchen' (für nicht geladen) aus.


    Ich stell mir das so ähnlich wie die ICQ Grafiken oder die Lämpchen hier im board vor.


    [edit]Mir ist grad noch ne Idee gekommen. Ich weiss nur nicht ob das realisierbar ist. ;)
    Kann man das irgendwie realisieren indem ich per script die übermittelte IP anpinge? So in der Art:


    Wenn ping *IP* wahr -> lade Grafik A
    Wenn ping *IP* falsch -> lade Grafik B


    Grafik A und B würden dann auf dem web-server liegen!


    Nur wie setzt ich das in ne vernünftige Form um??

  • Hi


    da kann man viel machen, und vom Prinzip läufts auch so ab, wie du unten geschrieben hast. Nur das Umsetzen hängt in erster Linie mal davon ab, welchen Programmier-/Skriptsprache du auf deinem permanenten Webserver zur Verfügung hast. Da gibts dann meist spezielle Pakete, mit denen man Netzwerk/Internet Geschichten erledigen kann. Das sollte dann in einem ein oder zwei-Zeiler erledigt sein.


    Ein anderes Problem ist aber, dass du deinem Webserver immer die aktuelle IP deines Rechners (die sich ja wahrscheinlich bei jeder Einwahl änder wird) mitteilst. Entweder händisch, indem du sie in eine Datei oder DB schreibst, oder automatisch via einem Tool oder Skript. Andere Möglichkeit wäre auch ein Dynamischer IP Service (welche es da gibt, sagt dir sicher gerne google ;))


    Hth The-spY

    I am the lizard king - I can do anything!

  • Zitat

    Original geschrieben von The-spY

    Ein anderes Problem ist aber, dass du deinem Webserver immer die aktuelle IP deines Rechners (die sich ja wahrscheinlich bei jeder Einwahl änder wird) mitteilst.


    Das erledigt momentan direct update, das die Test-Seite bei jeder IP-Änderung neu auf den Server lädt!

    PHP
    <body bgcolor="#FFFFFF">
    <p>Willkommen auf meiner kleinen Testseite!</p>
    <p>Wenn das grüne Ampelmännchen leuchtet ist der server online!</p>
    <p>Wenn kein Ampelmännchen leuchtet, ist der server grad offline!</P>
    <br><img src="http://*IP*/Ampelmaennchen.gif" border="0" align=""><br>
    <p>Updated *TIME* by <a href="http://www.directupdate.net">DirectUpdate</a></p>
    </body>


    [edit]
    Hab's geschafft:



    Alternativ auch mit grafischer Anzeige:
    document.write("Server ist online... <IMG SRC='images/gruen.gif'>");


    document.write("Server ist <b>nicht</b> online... <IMG SRC='images/rot.gif'>");


    [edit2]
    Hmm, irgendwie ist es das wohl doch noch nicht, oder liegt es am reload, das er mir nun anzeigt Server online egal, ob der server aktiv ist oder nicht!

  • Über JS ist eigentlich auch eine nette Lösung :) daran hab ich eben garnicht gedacht. Dein Problem wird sein, dass er das Bild einmal lädt, und danach immer den Zugriff darauf hat. Du müsstest also das Bild jedesmal neu initialisieren, also die Definition in die Timeout Funktion schmeissen, damit er bei jedem Check auch wirklich das Bild neu lädt. Gibts dann immernoch Probleme kannst du eine Zufallszahl (bild.gif?zz=232323) hinten dran hängen, damit er auch wirklich das Bild lädt, und nicht an den Browsercache geht. Allerdings solltest du das Bild nicht zu groß machen, sonst verursacht das ständige nachladen mehr Traffic, als du eigentlich einsparen willst ;)

    I am the lizard king - I can do anything!

  • Ich würde das Problem nicht clientseitig angehen, sondern auf dem Server lösen. Damit das Skript auf dem Server nicht immer geändert werden muß, solltest Du Dir einen dynamic DNS Provider suchen (http://www.dyndns.org finde ich hervorragend, weil's von vielen Hardware-Routern unterstützt wird).


    Dann reichen drei Zeilen PHP:

    PHP
    <?
    @$file = fopen("http://deinesubdomain.dyndns.org/", "r");
    echo "<img src=\"" . (@$file ? "online" : "offline") . ".gif\">";
    @fclose($file);
    ?>

    und der Browser zeigt entweder das "online.gif" oder das "offline.gif", je nachdem, ob dein Server gefunden wurde oder nicht.


    Gruß,


    Henning.

    ________________________

  • Zitat

    Original geschrieben von XNeo


    ...und der Browser zeigt entweder das "online.gif" oder das "offline.gif", je nachdem, ob dein Server gefunden wurde oder nicht.


    Gruß,


    Hmm, ich hab da mal meine dyndns eingetragen aber irgendwas ist da noch faul, da ich als Ausgabe:


    "; @fclose($file); ?>
    Willkommen auf meiner kleinen Testseite!


    ....



    bekomme!


    Anscheinend ein " zuviel, aber ansich kommt das ja nach deinem tag genau hin!



    Sucht er sich nach deinen script nicht die online/offlline.gif auf der dyndns-domain?? Also direkt auf dem PC?

  • Nein, er sucht nach online.gif und offline.gif in dem Pfad, in dem auch das PHP-Skript steht (also auf dem permanenten Webserver).


    Unter http://henning.medicit.de/test/onlinetest.php steht ein Testskript folgenden Inhalts:


    Eventuell ist PHP bei Deinem Webspaceanbieter nicht so konfiguriert, daß fopen() URLs öffnen kann? Dann ist diese Lösung natürlich so nicht möglich. Zu Debuggingzwecken kannst Du auch mal die "@" aus dem Quelltext entfernen, dann sollten (insbesondere im "Offline" Falle) Warnungen ausgegeben werden.


    Gruß,


    Henning.

    ________________________

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!