Thread Lebensdauer Thread > Elternprozess?
(6 answers)
Opened by weltwusel at 2009-12-12 23:42 2009-12-12T22:42:49 weltwusel Ich hab hier auch diverse Hintergrundjobs, die ich auch per Webseite steuere. Folgendes Konzept liegt dahinter: 1. Grundsätzlich werden Jobs per CRON gestartet. Aufruf z.B. "/pfad/cgi-bin/meinscript.pl CRON". 2. Mein Script unterscheidet zwei Aufrufvarianten gleich ziemlich am Anfang. Web und CRON wie folgt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (defined @ARGV) { # CRON Ausführung my $pid; if ($pid = fork()) { # Vater killen, wird nicht gebraucht bei CRON exit (); } else { # Sohn require "/pfad_zum_modul/cron.pl"; &cron_ausfuehren_shell(\%env); exit (); } # /CRON Ausführung } 3. Darüberhinaus kann ich jeden Job auch über Webseite starten, dafür mach ich nach Betätigung des Startbuttons diesen hier: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 if ($aufruf eq 'cronstart') { # CRON Ausführung my $pid; if ($pid = fork()) { # Vater jetzt leben lassen, Webseite ausgeben } else { # Sohn &cron_ausfuehren_shell(\%env,'SOFORT'); exit (); } # /CRON Ausführung } Das 'SOFORT' hinten sagt der sub nur, ob auf den nächsten Ausführungstermin geachtet werden muss oder nicht. 4. Sämtliche Steuerinformationen (letzte Ausführung, nächste, darf oder darf nicht etc.) hab ich in einer Steuerdatei liegen. 5. Die eigentlichen Jobs liegen in der sub cron_ausfuehren_shell(). So kann ich mit einem einzigen Script alles steuern und dieses sowohl für Starts aus dem Web als auch über CRON verwenden. Natürlich liegt das Script in einer Umgebung mit Username und Paßwort Absicherung. Und es erfüllt exakt Deine Anforderung. Crawler läuft im Hintergrund weiter, Steuerseite im Web erscheint und alles wurde per Button über CGI gestartet. Das Stoppen würde ich machen, wie betterworld geschrieben hat. Edit: Tabs entfernt Last edited: 2009-12-13 09:50:12 +0100 (CET) 10 print "Hallo"
20 goto 10 |