Schrift
[thread]8016[/thread]

Zeitgesteuertes Starten einer Subroutine



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
AndreasM
 2006-05-24 14:32
#66547 #66547
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen,

ich habe hier weniger ein Problem als vielmehr eine Verständnisfrage.

Es geht mir um folgendes: Ich möchte aus einem Skript einen Dauerläufer machen. Zu einer bestimmten Uhrzeit soll es mir den Inhalt verschiedener Verzeichnisse auslesen und nachschauen, ob bestimmte Dateien ordnungsgemäss wohin kopiert wurden.
Ich muss also regelmässig nach der Uhrzeit schauen.
Datum und Uhrzeit, Kalenderwoche etc. kann ich auslesen.

Im Moment sieht meine Lösung so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
SCHLEIFE:
($Minuten, $Stunden, $Tag, $Monat, $Jahr, $Woche, $Datum)=Datum();
my $z=1;
until (($Stunden == 16) and ($Minuten == 00)){
print"$Stunden:$Minuten. Die Schleife wartet zum $z. mal...\n";
$z++;
sleep 30;
($Minuten, $Stunden, $Tag, $Monat, $Jahr, $Woche, $Datum)=Datum();
}
werteeinlesen();
pruefen();
goto SCHLEIFE;


Ich dachte zuerst an eine Subroutine zur Zeitprüfung, die sich selbst rekursiv aufruft. Aber bekomme ich mit einer rekursiven Subroutine nicht eventuell (irgendwann) ein Speicherproblem?
Oder hat einer von Euch ggf. eine Variante ohne goto?

Grüße
AndreasM

[edit]Mit einem Cronjob wird das ganze leichter. Ich weiss...[/edit]\n\n

<!--EDIT|AndreasM|1148468388-->
renee
 2006-05-24 15:00
#66548 #66548
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Warum machst Du kein Cronjob bzw. Service daraus?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
AndreasM
 2006-05-24 15:53
#66549 #66549
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Werde ich tun.
Ich Windowsunerfahren und wusste bis eben nicht, das es sowas wie den "Taskplaner" gibt :D
renee
 2006-05-24 16:02
#66550 #66550
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es ist keine Schande Windowsunerfahren zu sein ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-05-24 17:46
#66551 #66551
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Quote
Oder hat einer von Euch ggf. eine Variante ohne goto?

Ist GOTO nicht ziemlich verpönt in der Programmierwelt? Mir wurde zu-
mindest beigebracht, dass man GOTO vermeiden sollte.

Ansonsten ist der Vorschlag von Renee der optimalste. Dennoch habe ich
mir mal Gedanken dazu gemacht, wie man das ohne Scheduler lösen
könnte...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;

sub sleep_time ($) {
  my ($start_std,$start_min,$start_sec) = split /:/, shift;
  $start_sec += $start_min * 60 + $start_std * 3600;
  my ($sec,$min,$std) = (localtime)[0..2];
  $sec += $min * 60 + $std * 3600;
  return $start_sec > $sec ? $start_sec - $sec : 86399 - $sec + $start_sec;
}

my $start_time = '16:00:00';

while (1) {
  sleep sleep_time($start_time);
  werteeinlesen();
  pruefen();
}


Gruß,
opi\n\n

<!--EDIT|opi|1148478540-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-05-24 20:46
#66552 #66552
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, GOTO ist verpönt. Lesenswert ist Dijkstras Go To Statement Considered Harmful
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-05-24 20:50
#66553 #66553
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@renee, gibt es ein Modul, das mir einen Zeitstempel in Sekunden umrechnet?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-05-24 21:18
#66554 #66554
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was meinst Du mit "Zeitstempel in Sekunden umrechen"? Der normale Unix-Timestamp ist ja schon in Sekunden (seit 1.1.1970)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-05-24 21:23
#66555 #66555
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,24.05.2006, 19:18]Was meinst Du mit "Zeitstempel in Sekunden umrechen"? Der normale Unix-Timestamp ist ja schon in Sekunden (seit 1.1.1970)...[/quote]
damit meine ich einen ersatz für meine beispielfunktion. ich übergebe
einen zeitstempel und erhalte ihn in sekunden zurück, oder millisekunden,
oder in tagen... wie auch immer. gibt es da etwas?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-05-24 21:26
#66556 #66556
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich kenne keins auf Anhieb, aber ich kenne ja auch nicht alle Module ;-)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-05-24 14:32.