Jump to content
Froxlor Forum
  • 0

Ausf?hrungszeitpunkt der Cronjobs festlegen


Netsurfer

Question

Hallo,

 

ich w?rde gerne erreichen, dass die Cronjobs unter Froxlor wie bspw. der Backup Cronjob zu einer bestimmten Uhrzeit ausgef?hrt werden.

Kann mir netterweise jemand einen Tipp geben, wie ich das anstelle?

 

Besten Dank im Voraus!

 

Gru?

Gunther

Link to comment
Share on other sites

Recommended Posts

Ja, danke - h?tte ich auch selber drauf kommen k?nnen ...!

 

froxlor_froxlor_master_cronjob.lock-11705:

Setting Lockfile to /var/run/froxlor_froxlor_master_cronjob.lock-11705
Setting Froxlor installation path to /var/www/froxlor
Userdatas included
Table definitions included
Database Class has been loaded
Database-connection established
Froxlor settings have been loaded from the database
Checking froxlor file permissionsFroxlor version and database version are correct
Logger has been included
  cron_tasks: Searching for tasks to do
Cronfiles have been included
Closing database connection
 

und

 

froxlor_cron_traffic.lock:

11710

 

Problem scheint mir eher darin zu liegen, dass die froxlor_cron_traffic.lock im Anschluss nicht gel?scht wird, oder zumindest nicht immer, was dann sp?testens beim n?chsten Start des Traffic Cronjobs zu dem besagten Problem f?hrt.

Link to comment
Share on other sites

Naja das wurde ja jetzt durch das debug Flag nicht gel?scht... Schau mal ob es gel?scht wird wenn das nicht an ist (btw der traffic cron sollte nur 1x am Tag laufen, der Verbrauch wird sonst mehrfach berechnet)

Link to comment
Share on other sites

Naja das wurde ja jetzt durch das debug Flag nicht gel?scht... Schau mal ob es gel?scht wird wenn das nicht an ist (btw der traffic cron sollte nur 1x am Tag laufen, der Verbrauch wird sonst mehrfach berechnet)

 

Schon klar, dass sie dieses Mal aufgrund der Debugging Einstellung nicht gel?scht wurde. Aber wurde sie vorher (ohne Debugging) eben auch nicht (bisher beide Male, wo der Job regul?r ausgef?hrt werden sollte).

Und ja, der Traffic Cronjob l?uft normalerweise bei mir 1x am Tag.

Link to comment
Share on other sites

Hallo!

 

Ich bin, so glaube ich zumindest, ein St?ckchen schlauer ...

 

Vorweg: Kannst du, oder jemand anders, mal bitte gucken, ob die Datei 'froxlor_cron_traffic.lock' in /var/run bei dir/ ihm auch grunds?tzlich nicht gel?scht wird, also immer vorhanden ist und nur bei jeder Ausf?hrung des entsprechenden Cronjobs der Zeitstempel aktualisiert wird?

 

Diese Datei ist aber nicht, wie ich zuerst irrt?mlich angenommen habe, der Grund f?r die Benachrichtigung per E-Mail "There is already a Cronjob in progress. Exiting...".

 

Sondern es ist der Backup Cronjob, der selbst bei relativ geringer Belegung des Speicherplatzes nicht in 5 Minuten fertig ist.

 

Nun ist es nat?rlich zumindest "?u?erst l?stig", wenn man t?glich mind. einmal eine entsprechende Mail vom Daemon erh?lt. Kann man da irgendwie "Abhilfe" schaffen?

 

Gru?

Gunther

Link to comment
Share on other sites

Hi!

 

Vorweg: Kannst du, oder jemand anders, mal bitte gucken, ob die Datei 'froxlor_cron_traffic.lock' in /var/run bei dir/ ihm auch grunds?tzlich nicht gel?scht wird, also immer vorhanden ist und nur bei jeder Ausf?hrung des entsprechenden Cronjobs der Zeitstempel aktualisiert wird?

 

Die Lock Datei des Traffic Cronjobs wird nicht gel?scht, weil es schlicht keinen Befehl daf?r gibt in der Datei 'cron_traffic.php'.

Folgende Erg?nzung am Ende der Datei "l?st" das Problem:

Original:

if(function_exists('pcntl_fork')) {
	die();
}

Neu:

if(function_exists('pcntl_fork')) {
	unlink($TrafficLock);
	die();
}

Im Endeffekt ist es reine "Kosmetik", da das Vorhandensein der Datei 'froxlor_cron_traffic.lock' keinerlei Auswirkungen hat (wenn der (die) entsprechende(n) Prozess(e) beendet ist (sind)).

 

Gru?

Gunther

Link to comment
Share on other sites

Netsurfer hat Recht, da wurde wohl beim Forken nicht mehr dran gedacht, dass das Lockfile auch wieder weg muss. Danke, wird sofort eingespielt

 

EDIT: Doch nicht korrekt, sorry. Die urspr?ngliche Fehlermeldung vom OP war "There is already a Cronjob in progress. Exiting..." - diese kommt NICHT vom Traffic-Cron und hat auch nichts mit dessen Lock-File zu tun, das kommt direkt vom Master-Cronjob, und die Pr?fung wird in der lib/cron_init.php ausgef?hrt und das Lockfile in lib/cron_shutdown.php wieder gel?scht.

Link to comment
Share on other sites

Hi!

 

Netsurfer hat Recht, da wurde wohl beim Forken nicht mehr dran gedacht, dass das Lockfile auch wieder weg muss. Danke, wird sofort eingespielt

 

EDIT: Doch nicht korrekt, sorry. Die urspr?ngliche Fehlermeldung vom OP war "There is already a Cronjob in progress. Exiting..." - diese kommt NICHT vom Traffic-Cron und hat auch nichts mit dessen Lock-File zu tun, das kommt direkt vom Master-Cronjob, und die Pr?fung wird in der lib/cron_init.php ausgef?hrt und das Lockfile in lib/cron_shutdown.php wieder gel?scht.

 

BTW: Ich bin der OP ...! :P

 

Und ja, in Post #23 habe ich das ja bereits geschrieben.

Und nein, die 'froxlor_cron_traffic.lock' wird eben nicht von der 'lib/cron_shutdown.php' wieder gel?scht. ;)

 

Gru?

Gunther

Link to comment
Share on other sites

und nein, die 'froxlor_cron_traffic.lock' wird eben nicht von der 'lib/cron_shutdown.php' wieder gel?scht. ;)

 

ist mir klar - aber deine "Fehlermeldung" beschreibt nicht das vorhandensein des traffic-cronlogs ("Traffic Run already in progress") sondern eben den des Master-Cronjobs ("There is already a Cronjob in progress. Exiting...")

Link to comment
Share on other sites

ist mir klar - aber deine "Fehlermeldung" beschreibt nicht das vorhandensein des traffic-cronlogs ("Traffic Run already in progress") sondern eben den des Master-Cronjobs ("There is already a Cronjob in progress. Exiting...")

 

Diese Datei ist aber nicht, wie ich zuerst irrt?mlich angenommen habe, der Grund f?r die Benachrichtigung per E-Mail "There is already a Cronjob in progress. Exiting...".

 

Sondern es ist der Backup Cronjob, der selbst bei relativ geringer Belegung des Speicherplatzes nicht in 5 Minuten fertig ist.

 

Wie gesagt - siehe Post #23 ;)

 

Inzwischen bin ich ja auch ein St?ckchen weiter mit den ganzen Cronjobs - siehe Cronjobs - Master Cronjob

 

Gru?

Gunther

Link to comment
Share on other sites

Hallo,

 

ich nochmal ...!

Das Setzen der entsprechenden Timestamps in der DB ist ja soweit kein Problem, allerdings habe ich jetzt immer den Fall, dass mir der Cron Daemon mailt:"There is already a Cronjob in progress. Exiting..."

 

In welcher Reihenfolge und/ oder mit welchem min. Zeitabstand starte ich denn die einzelnen Cronjobs am besten?

Laufen m?ssen alle au?er den beiden APS Jobs und die Intervalle sind unver?ndert.

 

Besten Dank im Voraus!

 

Gru?

Gunther

 

PS: ?rger macht immer der froxlor_cron_traffic ...!

Link to comment
Share on other sites

der Fehler kommt wenn vom Master-Cronjob, der das Starten der Cronjobs managed. Der sollte laut default config alle 5 Minuten aufgerufen werden, logischerweise sollte also kein Cron einen Intervall von unter 5 Minuten haben, sonst verrennt er sich in eben diesen Fehler. 

Link to comment
Share on other sites

Guten Morgen,

 

und besten Dank f?r deine schnelle Antwort.

 

der Fehler kommt wenn vom Master-Cronjob, der das Starten der Cronjobs managed. Der sollte laut default config alle 5 Minuten aufgerufen werden, logischerweise sollte also kein Cron einen Intervall von unter 5 Minuten haben, sonst verrennt er sich in eben diesen Fehler. 

 

Der Master-Cronjob hat bei mir auch das Standard-Interval von 5 Minuten und es gibt keinen anderen Cronjob mit einem k?rzeren Intervall. Ich habe bereits ausprobiert das, den jeweils letzten Ausf?hrungszeitpunkt der einzelnen Jobs zeitlich versetzt zu setzen, genauso wie alle auf denselben Zeitpunkt.

 

Ergebnis ist in beiden F?llen gleich: Es bleibt immer die /var/run/froxlor_cron_traffic.lock, die dann beim n?chsten Start des Master-Cronjobs besagten Fehler samt Benachrihtigung produziert.

 

EIne Idee?

Link to comment
Share on other sites

oh ja...hm, wie gro? sind so die access.log von den 16 kunden? wenn es am traffic cron liegt, muss es was damit zu tun haben.

Schau mal nach, ob dir evtl. die PHP extension pcntl installiert hast, damit kann Froxlor den traffic cron in einem eigenen Prozess forken und diesen Fehler umgehen.

Link to comment
Share on other sites

Bis auf eine, die knapp 28 MB gro? ist, sind alle anderen "unbedenklich" klein. Verwende auch Logrotate.

 

Zu deiner Empfehlung mit der pcntl ist das erste was ich dazu gefunden habe:"Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment."

 

Von daher w?re es mir lieber, wenn sich das Problem auch anders l?sen lassen w?rde ...! ;)

Link to comment
Share on other sites

So, musste jetzt erstmal nachgucken.

Also ich habe (u.a.) das Paket

php5-cli                            5.3.23-1~dotdeb.0

installiert. Soweit ich wei?, beinhaltet das doch die pcntl.

 

Auszug von debian.org dazu:

Kommandozeilen-Interpreter f?r die Skriptsprache PHP5

Dieses Paket stellt den Kommandozeilen-Interpreter /usr/bin/php5 zur Verf?gung, der f?r das Testen von PHP-Skripten in einer Shell oder auch f?r die Erledigung von Shell-Skripting-Aufgaben verwendet werden kann. Die folgenden Erweiterungen sind integriert: bcmath, bz2, calendar, Core,

 ctype, date, dba, dom, ereg, exif, fileinfo, filter, ftp, gettext, hash, iconv, json, libxml, mbstring, mhash, openssl, pcntl, pcre, Phar, posix, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, zip und zlib.

Muss ich denn ansonsten noch irgendetwas "machen", oder benutzt Froxlor die automatisch, wenn vorhanden?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...