Zwei parallele Schleifen

  • Hallo zusammen,

    ich hab ein kleines Programm geschrieben, was in etwa so aussieht

    Spoiler anzeigen
    [autoit]


    While 1
    Sleep(10000)
    If FileExists($er_input & "\1.zip") Then _check()
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    ...usw...usw...

    [/autoit]

    Alles wunderbar...das Programm läuft wunderbar durch.
    Jetzt möchte ich parallel dazu eine zweie Verarbeitung von Dateien starten.
    Diese soll aber immer zu einer bestimmten Uhrzeit (07:00 morgens)
    einen anderen Stapel von Dateien verarbeiten.(Mit diesen Dateien haben
    die Dateien aus der ersten Verarbeitung nichts zu tun).


    Habt ihr eine Idee?

    3 Mal editiert, zuletzt von Davor (24. Januar 2008 um 13:16)

  • Also ich hab mir jetzt die Funktionen angeguckt, muss aber ehrlich sagen,
    dass ich grad nicht wüsste, wie ich das damit machen kann...

  • Ich würde einfach in der While-Wend-Schleife eine 2. If-Anweisung schreiben die prüft ob es 7:00 Uhr ist. (@hour, @min)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Diese Möglichkeit besteht auch, wenn das mit dem parallelen Abarbeiten nicht so genau genommen wird. Wenn also die 1. Funktion so lange ruhen kann, wie die 2. Funktion für die Abarbeitung der Daten braucht, dann kann man das so vereinfachen. Aber vielleicht beschreibt Davor mal genauer, was er vorhat, dann kann man besser helfen.

  • Also ich hab es jetzt aus Angst vor "Überladung" meines Skriptes
    in ein neues Skript geschrieben..Dann müssen halt die beiden Skripte
    parallel laufen..das dürfte doch kein Problem geben, oder?
    Ich habs getestet und es scheint keine Probleme zu geben, wenn
    zwei Skripte gleichzeitig laufen...

    Das zweite Skript werde ich dann einfach als Task einplanen.

    Danke euch!!

    Micha_he: Sowas habe ich mir auch gedacht, aber was wenn die Schleife um 07:00 Uhr nicht durchlaufen wird, sondern bspw. eine Sekunde später/früher? Da war mir das Risiko zu hoch.

    Also nochmal danke euch!

  • @Davor: "If $hour=7 And $min < 5 Then" würde die Funktion z.B. zwischen 7:00 und 7:05 starten. Das Sollte doch reichen, oder ?
    Ansonsten wäre auch ein Aufbau wie folgt machbar:

    - wenn $hour >= 7 und fertig = "FALSE" dann starten
    - wenn Funktion Ende dann Variable fertig auf "True" setzen
    - wenn fertig = "True" und $hour < 7 dann fertig = "False"

    So läuft die Funktion 1x nach 7:00 Uhr und wird wieder zwischen 0:00 und 6:59 aktiviert.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Micha_he: Sowas habe ich mir auch gedacht, aber was wenn die Schleife um 07:00 Uhr nicht durchlaufen wird, sondern bspw. eine Sekunde später/früher? Da war mir das Risiko zu hoch.

    'Eine Sekunde später/früher?'
    Da fehlt jetzt aber der Ironie-Smily, oder?
    Deine Programme laufen unter Windows!

  • Gerade da meine Programme unter Windoof laufen (müssen) ist
    mir das zu risikoreich... ;)

    Ich dachte halt an eine Schleife, die ständig prüft, ob es grade 07:00 Uhr ist...
    Wenn das Programm jetzt bspw. länger als eine Sekunde in der Schleife verharrt und es ist grade 06:59:59,
    dann werden die Dateien nicht verarbeitet und das ist mir bei der Brisanz der Daten einfach zu
    risikoreich...Ich hab mal aus Spaß sowas gebastelt und mit TimeDiff mir die Laufzeiten in einer Schleife ausgeben lassen,
    welche dann unterschiedlich waren, je nach Auslastung des Rechners (in meinem Fall Server)

    • Offizieller Beitrag

    Ich dachte schon, Du strebst eine sekundengenaue Verarbeitung an. ;)

    Wenn Du nur willst, dass eine Funktion um 7:00 Uhr gestartet wird, dann teste doch zusätzlich, ob sie bereits gestartet wurde.
    Wenn es also bereits z.B. 7:00:05 ist und Deine Funktion noch nicht gestartet wurde, dann starte sie. Das läßt sich doch einfach mit einer Prüfvariablen erledigen.