Geplante Aufgaben (Cron-Job) wird nicht beendet

  • Hallo,

    ich habe eine Skript durch die geplanten Aufgaben durchgeführt. Siehe Bild für meine Einstellungen. Komischer weiße beendet sich der Job nicht und wird durchgehend ausgeführt.

    Jetzt habe ich ein bisschen mit meinem Code rumgespielt und rausgefunden, das wenn ich eine for Schleife raus nehme das Skript vernünftig abschließt.

    In der Schleife crawle ich quasi 8x eine Seite. Wenn ich jetzt die schleife rausnehme und die Funktion nur einmal aufrufe, dann schließt sich der Job ab.

    Hat einer eine Ahnung woran das liegen könnte?


    Beste Grüße

    Code
    for ($i = 0; $i < 9; $i + 1) {
        $match = crawl_page($url);
        // check if product is available
        if ($match) {
            // send mail
            .....
        }
    sleep(random_int(1, 10));
    }

    gagaga.png


    .test.png

  • Versuchs mal hiermit:


    for ($i = 0; $i < 9; $i++) {

    Hier lag das Problem. $i +1 endet in einer endlos schleife oder so. Weiß nicht wieso ich das so komisch gemacht hatte. Jetzt habe ich aber immer noch das Problem das ich 3 Scrips habe, die nicht fertig werden, wegen diesem Fehler. Gibt es einen Weg das zu beenden.

  • wegen diesem Fehler

    Na dann korrigiere den Fehler doch wie beschrieben?! Anderenfalls verstehe ich leider nicht wie du das meinst.


    $i++ ist übrigens die Kurzschreibweise für $i = $i+1. Wenn du nur $i+1 schreibst, wird $i nicht neu zugewiesen. Könnte sogar einen Syntaxfehler schmeißen meine ich.

    Laufen die Scripts denn, wenn du sie direkt im Browser oder deiner lokalen Testumgebung aufrufst? Da kann man die meisten Fehler ja entdecken und abfangen. Ich würde erst fertig getestete Scripts Richtung Cron jagen.

  • Na dann korrigiere den Fehler doch wie beschrieben?! Anderenfalls verstehe ich leider nicht wie du das meinst.

    Na, ich denke er meint, die jobs laufen immer noch. Die sind ja gestartet und lassen sich nicht mehr davon beeindrucken, wenn die scripts nachträglich geändert werden. ;)

  • Weiss jetzt nicht, warum die Endlosschleife hier nicht in den Timeout läuft, aber es ist jedenfalls so, dass es immer noch Unterschiede gibt zwischen "Jetzt ausführen" oder auch auf der Übersichtsseite ausführen lassen und dem tatsächlichen Cronjob. Aber jedenfalls sollten sie unter deinem User laufen und man sollte sie mit dem kill-Befehl stoppen können.

  • Darauf hat man im SSH-Chroot aber keinen direkten Zugriff. Unabhängig davon muss das irgendwann in ein Timeout laufen, da würde ich mir gar keine Gedanken machen.


    Edit: Achso, hier geht's ja gar nicht um Webhosting. Mea culpa! X/

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • 21,5h Timeout? Alter Schwede, sehr großzügig bemessen! =O:D


    Und es handelt sich also um einen eigenen Server? Dann könnte man da ruhigen Gewissens mal an den Stellschräubchen drehen. :)

    LOL, ich würde mal nachschauen unter Abuse-Hinweise. Wahrscheinlich ist nach 21,5 Stunden das Webhosting gesperrt worden.:D:evil: