Anwendung bleibt stehen, was tun?

  • Hallo zusammen,

    ich habe vor ein paar Wochen ein Autoit Script gebaut, welches "eigentlich" zuverlässig läuft. Ca. alle 10 Sekunden kommt dabei ein Logfile Eintrag zustanden. Somit kann ich remote - via Logfile - sehen, ob die Anwendung noch läuft. Jeden Tag wird ein neues Logfile generiert. Es kam dann man der Zustand, dass nach 4 oder 5 Tagen kein Logfile mehr vom aktuellen Tag vorhanden war. Ich habe dann festgestellt, dass das Logfile vom Vortag mittendrin aufgehört hat zu protokollieren.

    Daraufhin lassen ich jetzt um kurz vor Mitternacht den PC automatisch neu durchstarten (die paar Minuten tun mir nicht weh). Danach fängt die Anwendung wieder an zu protokollieren. Leider kommt es jetzt ab und zu vor, dass binnen 24 Stunden die Anwendung auch nicht mehr protokolliert, obwohl Sie "optisch" noch läuft. Wie kann man denn sowas abfangen, also einen Prozess, der zwar noch laut Taskmanager aktiv ist, aber "innerlich" wohl schon tod?

  • Sorry. Persönliche Daten wurden anonymisiert.

  • _WinHttpSimpleSSLRequest($hConnect, 'POST', '/', 'https://monitor.fqdn.tld/', $sPOST)

    So auf Anhieb konnte ich nichts erkennen aber diese Zeile (Z. 105) wundert mich ein wenig. Denn du versuchst solange zu posten bis etwas gepostet wurde.

    Es kann sein, dass die Verbindung unterwegs stirbt, weil dein Router neustartet oder unterwegs etwas verloren gegangen ist oder sonst was.

    Bastel dort mal ein Timeout rein oder füg in regelmäßigen Abständen eine Debugzeile ein damit du siehst ab welcher Zeile dein Skript hängt.

    Außerdem solltest du auch das Handle $hConnect schließen, das lässt du bei jeder Schleifeniteration offen.

    Die Session _WinHttpOpen kann gerne offen bleiben, aber das Verbindungshandle zum Server musst du schließen bevor du dich erneut verbindest.

  • Danke alpins, toller Tip. Habe es jetzt mal umgebaut. Mal schauen, ob ich das Problem damit einkreisen kann. Schönes Wochende. Bin jetzt erst mal mit Kind und Kegel 2 Wochen im WoMo unterwegs.