Webserver deaktiviert sich selbst....

  • Hallo zusammen,


    ich hab da ein blödes Problem:
    Bei mir auf der TS209 ist der Webserver incl MyPHP aktiviert. Auf dem Webserver befindet sich eine PHP-Datei, die alle 5 minuten
    von einem Cronjob aufgrufen wird um Daten auszulesen und in die DB zu schreiben.
    Mittlerweile ist es mir schon dreimal passiert, daß sich der Webserver deaktiviert hat. Das heißt, in der Adminoberfläche der NAS ist kein
    Haken beim Webserver und er lässt sich auch nicht setzen. Im Feld "Anschlussnummer" steht dann auch deaktiviert.


    Wenn ich die NAS neu starte ( über die Adminoberfläche ) dann passt wieder alles.....der Webserver ist wieder aktiviert und die Daten werden
    zyklisch von Cronjob weggeschrieben.


    Hat jemand von Euch ne Idee, was das sein kann ?


    Viele Grüße


    Oli

  • Wie sieht es mit der CPU aus, wenn das Script arbeitet /endet? bzw. Um welche Datenmengen (MB) handelt es sich dabei, die alle 5 min. in die mysql "gehauen" werden? Wie lange brauch das Script um die Daten in die mysql zu "hauen"?

  • Hallöle,


    geh mal per SSH auf Dein NAS und starte mit

    Zitat

    /etc/init.d/Qthttpd.sh restart

    den Apache neu, falls der fehler im Apache liegt, wirst Du ihn auf diese Weise am schnellsten erhalten.
    Falls dort alles Reibungslos verläuft, kannst Du in den error-logs des Apache nachsehen, was und ggf. wo der Fehler auftritt.
    Wenn das auch nicht hilft, könntest Du noch Dein Script hier "ablichten", damit alle mal einen Blick darauf werfen können, viele Augen sehen einfach mehr als nur 2 (darum können Stubenfliegen auch 32 Fernsehprogramme gleichzeitig sehen :D )


    Grüße
    Jody

  • Hai zusammen,


    erstmal vielen Dank für die ersten Klärungsversuche.... :D


    Die Datenmenge, die alle 5 Minuten abgeholt werden ist lächerlich...Das sind 20 Kanäle von einem Datenlogger und der Datentyp ist float.
    Also 20 Floatwerte. Sollte also absolut mit links gehen ?!?


    Das mit dem SSH muß ich erstmal nachlesen...hab ich noch nie gemacht...vorallem noch mit dem MAC... :D


    Liebe Grüße
    Oli


    EDIT:


    Hai mittanand,


    ging doch schneller, als ich dachte...hoffe nur, daß ich sonst am PC nichts verbogen habe...oder gar auf der NAS...


    Hier hab ich mal kopiert, was meine Shell so meldet, wenn ich den Apache neu starte:


    ~] # /etc/init.d/Qthttpd.sh restart
    Shutting down Qthttpd services: Qthttpd.
    /usr/local/apache/bin/apachectl stop: httpd stopped
    Apache httpd is stopped.
    Starting Qthttpd services:Apache logs have been cleaned.
    [Tue Apr 21 20:39:27 2009] [alert] apache: Could not determine the server's fully qualified domain name, using 192.xxx.xxx.xxx for ServerName
    /usr/local/apache/bin/apachectl start: httpd started
    [~] #


    Kann jetzt jemand was damit anfangen ? Für mich sind das spanische Dörfer.... :D


    Liebe Grüße


    Oli

    Einmal editiert, zuletzt von christian () aus folgendem Grund: Doppelte Beiträge vermeiden, siehe Forenregeln!

  • 1) Konsole mit dem MAC => Programme -> Dienstprogramme -> Terminal


    2) Apache logs:

    Code
    /mnt/HDA_ROOT/apache/logs


    3) Could not determine the server's fully qualified domain name, using 192.xxx.xxx.xxx for ServerName
    Ist normal ;)
    Mögliche variante (aber kein muss)

    Code
    echo HOST.DOMAIN.com > /etc/hostname
    /bin/hostname -F /etc/hostname
    /etc/init.d/httpd restart


    Am besten aber Du postest Dein Script mal hier. ;)

  • Hai zusammen,


    wenn Ihr mein PHP-Script meint, .....kein Problem. Da steht nichts geheimes drin:



    <?
    //File einlesen
    $RawXmlFile = file_get_contents('http://192.xxxx.xxx.xxx/xml');


    //Objektarray aus den Nodes
    $xmlstring = simplexml_load_string($RawXmlFile);


    // Timestamp wird nicht vom MemoM genommen, sondern
    // von der Systemzeit der NAS
    $Timestamp = time();
    $Datum = date("Y-m-d",$Timestamp);
    $Zeit = date("H:i:s",$Timestamp);
    $Jahr = date("Y",$Timestamp);


    // Messwert einer eigenen Variablen zuordnen
    $MW_01 = $xmlstring->device[0]->v1;
    $MW_02 = $xmlstring->device[1]->v1;
    $MW_03 = $xmlstring->device[2]->v1;
    $MW_04 = $xmlstring->device[3]->v1;
    $MW_05 = $xmlstring->device[4]->v1;
    $MW_06 = $xmlstring->device[5]->v1;
    $MW_07 = $xmlstring->device[6]->v1;
    $MW_08 = $xmlstring->device[7]->v1;
    $MW_09 = $xmlstring->device[8]->v1;



    // Verbindung mit DB aufbauen
    mysql_connect("localhost","root","admin")or die
    ("Keine Verbindung moeglich");


    mysql_select_db("Temperaturen")or die
    ("Die Datenbank existiert nicht");


    // Daten in MySql schreiben
    $eintrag = "INSERT INTO messwerte (Jahr,Datum, Time,Chan_01,Chan_02,Chan_03,Chan_04,Chan_05,Chan_06,Chan_07,Chan_08,Chan_09)
    VALUES ('$Jahr','$Datum','$Zeit','$MW_01','$MW_02','$MW_03','$MW_04','$MW_05','$MW_06','$MW_07','$MW_08','$MW_09')";
    $eintragen = mysql_query($eintrag);


    mysql_close()
    ?>


    Hoffentlich findet Ihr etwas.....daumendrück .. :D


    Liebe Grüße


    Oli

  • Zitat

    $RawXmlFile = file_get_contents('http://192.xxxx.xxx.xxx/xml');


    Sieht auf den ersten blick so aus, als liegt die XML Datei in dem DocumentRoot (Apache Verzeichnis). Und Dein XML-Parser verarbeitet die Datei via http.... (Das könnte es schon sein, der Rest müsste zumindest so funktionieren)


    Mache mal bitte aus "file_get_contents('http://192.xxxx.xxx.xxx/xml')" einen absoluten Pfad.
    Diesen kannst Du via CLI ermitteln. Am einfachsten aber wäre eine phpinfo();. (Da ich Deine Kenntnisse nicht kenne) ;)
    Speichere Dir mal folgendes als z.B. phpinfo.php

    PHP
    <?php
    phpinfo();
    ?>


    Rufe das dann im Browser auf.
    Suche dann darin nach "DOCUMENT_ROOT". Das ist schon einmal der Pfad, dahinter schreibst Du deinexml.xml
    Beispiel:
    /share/Qweb/deinverzeichnis/deinexml.xml


    So sollte das dann aussehen und funktionieren.

  • Hai zusammen,


    äh..vielen Dank, daß Du Dir soviel Arbeit gemacht hast....aber das File liegt nicht auf der NAS. Das ist ein Datenlogger mit integriertem Webserver. Dieser Logger hängt auch an der Fritzbox. Wenn ich nun die IP des Loggers aufrufe, werden die aktuellen Temperaturen im Browser dargestellt.
    Um nun an die nettodaten ranzukommen kann ich eben die "IP /xml" aufrufen. Dás Ergebnis ist dann ein XML-File, welches im Browser dargestellt ist.


    Mit dem "file_get_contents" hole ich mir - wenn ich das richtig verstehe - den Handle auf die Daten....


    Viele Grüße


    Oli

  • Arbeit mache ich mir keine. ;) Bin irgendwie gerne hier im Forum, das iss eher Freizeit. ;)
    Also file_get_contents ist praktisch nur eine Methode um Inhalte einer Datei in einen String "einzulesen". Also gibt die Datei in einem String zurück... So müsste es "aus dem Stehgreif gegriffen" sein.... :roll: *g* Bin a bissl eingeröstelt in php... *g* :roll:

    Kann es sein, dass Du Wetterdaten aufzeichnest? Oder misst Du dabei Deine Körpertemperatur und schreibst die in eine Datenbank... *grins* Damit diese Daten im Falle eines Falles veröffentlicht und Direkt an den Hausarzt per mail gesendet werden... *kaputtlach* Spaß! :D
    Wäre auch ein wirklich cooles Hobby! :thumb:


    Das würde jetzt aber immer noch nicht erklären, warum Dein apache einen "abgang" macht....
    Mal eine andere Möglichkeit, die eventuell in Frage käme, wäre die, dass das Script vielleicht ab und zu nicht den httpd des Loggers "erreichen" kann. Php versucht das dann x sekunden, und schwupp apache ist aus. Warum auch immer.


    Um dies zu testen könntest Du Dir das XML vorher mit wget auf das NAS ziehen. Startest Du das php-Script direkt via crontab? Wenn ja, dann mache Dir mal einen neuen cron, der eine "machees.sh" startet, vorher ein wget oder curl macht, dann Dein php-Script ausführt. In dem php script änderst Du dann mal den Pfad zu einen Absoluten. Mal schauen, was dann rauskommt.

  • Hai zusammen,


    das kenn ich mit der Freizeit und daß es Spass macht.....ich bin noch recht aktiv in nem Meerwasserforum...


    Die Daten sind Temperaturdaten von meiner Heizung. Da ich ne WarmwasserSolaranlage aufm Dach habe, dieses aber nach Westen ausgerichtet ist, möchte ich die Daten von diesem
    Frühjahr aufzeichnen. Dann im Herbst sollen die Kollektoren aufgeständert werden und letzten Endes soll nächstes Frühjahr mit diesem verglichen werden. Ich erhoffe mir davon, eine Art Nachweis zu erbringen,
    daß die Ständerung einen gewaltigen Schub in die richtige Richtung bringt.
    Du kannst die Werte mal unter "www.Gischpl.de" anschauen. Dort einfach auf das Bild im Hauptframe klicken, dann siehst ein Chart....aber im Moment nur die Solardaten.


    Das hab ich mir auch schon gedacht, daß evtl der Webserver des Datenloggers nen Hänger hat und dadurch der ganze Rest abschmiert? Wäre interessant, was mein Script für Daten in der Datenbank produziert,
    wenn kein XML-File gefunden wird...muß ich gleich mal simulieren.. :D


    Das mit dem absoluten Pfad hab ich noch nicht gecheckt. Du meinst, dann einen absoluten Pfad zu verwenden, wenn ich das XML-File erst auf die NAS lade ?


    Nochmal vielen Dank und Grüßle


    Oli



    EDIT:
    Hai zusammen,


    ...hab gerade ausprobiert. Wenn das XML-File nicht erreichbar ist, dann werden einfach Null-Werte in die Datenbank geschrieben...


    Thats it. Abgestürzt ist leider nix..


    Grüßle
    Oli

    Einmal editiert, zuletzt von christian () aus folgendem Grund: Doppelte Beiträge vermeiden, siehe Forenregeln!

  • Das ganze kann ja auch passieren, wenn gleichzeitig die XML Datei neu geschrieben wird.... Scheint ja eher ein XML Stream zu sein. Deshalb hätten wir da mit wget wahrscheinlich mehr chancen. ;)
    Mit Fischen habe ich es auch ab und zu mal zu Tun... ;) Schönes Urlaubsgebiet ist übrigens Kühlungsborn. ;) Hier das Haus Direkt am Strand. ;) http://www.villa-laura-cottage.de Mal nebenbei. Ein Bootsführerschein wäre auch eine gute Voraussetzung für Norwegen... *schwärm* Einfach tolles Urlaubsgebiet. Man(n) mal ganz alleine auf einer Insel. ;)


    EDIT: Ja, ich meine den absoluten Pfad, wenn die Datei gedownloaded ist. ;) Klärt sich jetzt aber eh auf (etwas weiter unten findest Du das Shell script)


    So. Habe mal kurz ein Shell Script für Dich gebastelt, das Du nur modifizieren musst. ;)
    1) Ich Downloade mit dem ShellScript Das google Earhday logo. (URL_check="http://www.google.de/logos/earthday09.gif") Da sollte dann der http von der XML auf den logger rein.. Also http://192.xxx.xxx.xxx/xml;)
    2) wget -t 1 -O bild.gif "$URL_check" -o check.log --> Hier brauchst Du nur bild.gif in irgendwas.xml umbenennen. Praktisch ist das ein Downloade Datei als bild.gif und schreibe ein log in die check.log (in meinem Beispiel)
    3) Wenn es bei dem Download der XML mit wget einen Fehler gab, dann abbrechen, ansonsten starte mein Import php Script
    4) php index.php --> ist Durch Dein php script zu ersetzen Beispiel: php deinscript.php
    rm irgendwas.xml auch durch die gewünscht erstellte xml ersetzen. (Lösche xml nach Ausführung von php... - kann aber auch in php gemacht werden....)
    Speichern & auf den NAS schieben als irgendwas.sh und chmod +x nicht vergessen. ;)


    5) In Deinem php Script gibst Du anstatt den http://loggerip/xml nur noch die lokale (also downgeloadete irgendwas.xml) an.
    6) Crontab nicht vergessen, dieser startet ja noch das php script.
    7) Das irgendwas.sh mal ausführen und testen. Wenn Du jetzt alles richtig gemacht hast, eine check.log erstellt, dann das PHP Script ausgeführt, wenn es im log von WGET keine Fehler gab. ;)



    So sollte das dann funktionieren. Das Script habe ich auch so getestet. ;) Sollte klappen, solange google das earthdaylogo noch hat. ;)
    Also noch volle 7 min... *lol* (Ansonsten nimm ein anderes Bild um das zu testen)
    Im übrigen wie bereits gesagt, sieht mir das nach einem XML Stream aus. Das kann php auch... Jedoch bedingt....Zumindest live ist das so 'ne sache...


    Ein php script brauchst Du eigentlich auch nicht (Geht auch Direkt in der Shell...), ist aber wahrscheinlich einfacher so...