Perl & Timer ohne Endlosschlaufe
Andreas Jud
Hallo,
Wieder einmal ein kleines Problem... ...einen Timer mit Perl...
Ich will ein Progrämmchen welches mir ein Logfile schreibt, das script muss alle 10 min. einen neuen Eintrag machen! Wie mache ich das am besten mit Perl?
Ich weiss das man es simple mit einer while oder sonstige endlosschlaufe machen könnte, aber gibt es da nichts besseres, den der anderweg rumm braucht das nur viel resourcen, für nichts !
MfG
Andy
Hallo,
Wieder einmal ein kleines Problem... ...einen Timer mit Perl...Ich will ein Progrämmchen welches mir ein Logfile schreibt, das script muss alle 10 min. einen neuen Eintrag machen! Wie mache ich das am besten mit Perl?
Ich weiss das man es simple mit einer while oder sonstige endlosschlaufe machen könnte, aber gibt es da nichts besseres, den der anderweg rumm braucht das nur viel resourcen, für nichts !
Also, wenn du einen UNIX / Linux - Server hast, und einen Telnetzugang hast, dann kannst du eine sogenannte Crontab einrichten. Für eine Anleitung gibst du man crontab ein. Mit crontab -e startest du einen Editor, mit dem du diese Crontab-Datei erstellen kannst. Dort kannst du festlegen, welche Programm regelmäsig ausgeführt werden sollen.
Hallo,
Wieder einmal ein kleines Problem... ...einen Timer mit Perl...Ich will ein Progrämmchen welches mir ein Logfile schreibt, das script muss alle 10 min. einen neuen Eintrag machen! Wie mache ich das am besten mit Perl?
Ich weiss das man es simple mit einer while oder sonstige endlosschlaufe machen könnte, aber gibt es da nichts besseres, den der anderweg rumm braucht das nur viel resourcen, für nichts !
Also, wenn du einen UNIX / Linux - Server hast, und einen Telnetzugang hast, dann kannst du eine sogenannte Crontab einrichten. Für eine Anleitung gibst du man crontab ein. Mit crontab -e startest du einen Editor, mit dem du diese Crontab-Datei erstellen kannst. Dort kannst du festlegen, welche Programm regelmäsig ausgeführt werden sollen.
hmm..... das ist nicht ganz das was ich will.... wie soll ich das nur erklären.. ich hab ein perl programm/script das 24 h zu einem chatserver verbunden ist. Nun soll es alle 10 min. die aktuelle Useranzahl in ein Log-File schreiben... ... aber so wies aussieht muss ich das ganze in eine endlosschleife einbauen welche eine Variable für den letzten eintrag hat und bei jedem durchgang die verstrichene Zeit überprüft.....
Falls doch noch jemand ne andere Idee hat, das ganze in perl zu realisieren, nur zu !
MfG
Anbdreas Jud
PS: Die Cronfiles werde ich erst für die Grafische aufbereitung brauchen :)
Also, wenn du einen UNIX / Linux - Server hast, und einen Telnetzugang hast, dann kannst du eine sogenannte Crontab einrichten. Für eine Anleitung gibst du man crontab ein. Mit crontab -e startest du einen Editor, mit dem du diese Crontab-Datei erstellen kannst. Dort kannst du festlegen, welche Programm regelmäsig ausgeführt werden sollen.
hmm..... das ist nicht ganz das was ich will.... wie soll ich das nur erklären.. ich hab ein perl programm/script das 24 h zu einem chatserver verbunden ist. Nun soll es alle 10 min. die aktuelle Useranzahl in ein Log-File schreiben... ... aber so wies aussieht muss ich das ganze in eine endlosschleife einbauen welche eine Variable für den letzten eintrag hat und bei jedem durchgang die verstrichene Zeit überprüft.....
Falls doch noch jemand ne andere Idee hat, das ganze in perl zu realisieren, nur zu !
Also wenn das Script 24 Stunden online sein soll, dann geht nur ne Endlosschlaufe. Wenn es aber nichts macht, wenn es sich alle 10 min neu connecten muß, ist die Idee mit der Crontab wohl die Beste. Aber das 24 Studenscript mußt du warscheinlich mit nohup benutzerinirc.pl & starten, da sonst das Script beendet wird, wenn du dich ausloggst.
Ich will ein Progrämmchen welches mir ein Logfile schreibt, das script muss alle 10 min. einen neuen Eintrag machen! Wie mache ich das am besten mit Perl?
Also, wenn du einen UNIX / Linux - Server hast, und einen Telnetzugang hast, dann kannst du eine sogenannte Crontab einrichten. Für eine Anleitung gibst du man crontab ein. Mit crontab -e startest du einen Editor, mit dem du diese Crontab-Datei erstellen kannst. Dort kannst du festlegen, welche Programm regelmäsig ausgeführt werden sollen.
hmm..... das ist nicht ganz das was ich will.... wie soll ich das nur erklären.. ich hab ein perl programm/script das 24 h zu einem chatserver verbunden ist. Nun soll es alle 10 min. die aktuelle Useranzahl in ein Log-File schreiben... ... aber so wies aussieht muss ich das ganze in eine endlosschleife einbauen welche eine Variable für den letzten eintrag hat und bei jedem durchgang die verstrichene Zeit überprüft.....
Verbinde die Sache doch mit FastCGI. Oder braucht Dir das zu viel Ressourcen??
Dann läuft dein Script immer, die Variable bleibt bestehen. Dann kannst Du noch den Crontab einrichten, damit das Script alle 10 Minuten wieder durchlaufen wird. Und alles ok...
Gruss, Beat
Hallo,
Ich weiss das man es simple mit einer while oder sonstige endlosschlaufe machen könnte, aber gibt es da nichts besseres, den der anderweg rumm braucht das nur viel resourcen, für nichts !
Da gibt's ne ganz tolle Funktion mit Namen sleep(), jetzt rat mal was die macht ;-)
Einziger Parameter: Anzahl der Sekunden.
Was ich doof finde: Kleiner als eine Sekunde Aufloesung geht nicht.
Calocybe
hi!
Was ich doof finde: Kleiner als eine Sekunde Aufloesung geht nicht.
$time_to_sleep = 0.25;
select undef, undef, undef, $time_to_sleep;
oder
use Time::HiRes qw(sleep);
sleep($time_to_sleep);
bye, Frank!