Hi!
Ein Cronjob soll beispielsweise alle 2 bis 3 Stunden ausgeführt werden. Die Minute soll dabei aber immer zufällig sein. Lässt sich das lösen? Ich arbeite mit Confixx.
Danke im Voraus und
mfg Christoph
Hi!
Ein Cronjob soll beispielsweise alle 2 bis 3 Stunden ausgeführt werden. Die Minute soll dabei aber immer zufällig sein. Lässt sich das lösen? Ich arbeite mit Confixx.
Danke im Voraus und
mfg Christoph
geht wohl nicht
Ich habe mich noch ein bisschen weiter informiert und vermute, dass es nicht gehen wird.
Allerdings hab ich mir einen kleinen Trick überlegt. Das Script wird per Cronjob immer zur gleichen Zeit gestartet.
Oben im Script generiere ich einen Zufallszahl für die Anzahl an Sekunden, die das Programm vorher warten soll.
$sleep = rand(1, 120);
sleep($sleep);
Wie ist das?
Hallo C-Jay,
zu deiner eigt. frage kann ich dir leider keine hilfestellung geben aber das:
$sleep = rand(1, 120);
sleep($sleep);Wie ist das?
wird glaube ich nicht hinhauen weil die execution time von php scripts serverseitig auf 30 Sek. limitiert ist (kann man aber umstellen wenn man die rechte hat )
Indyk
Hallo C-Jay,
zu deiner eigt. frage kann ich dir leider keine hilfestellung
geben aber das:$sleep = rand(1, 120);
sleep($sleep);Wie ist das?
wird glaube ich nicht hinhauen weil die execution time von php
scripts serverseitig auf 30 Sek. limitiert ist (kann man aber
umstellen wenn man die rechte hat )
da zaehlt aber die rechenzeit, nicht die uhrzeit. sleep nimmt keine rechenzeit.
vgl. auch den hinweis im manual http://de2.php.net/set_time_limit
13.57:je@1@booster:~
$ cat test.php
<?php echo "starting\n";<br />var\_dump(set\_time\_limit(1));
sleep(3);
echo "ending\n";
?\>
13.57:je@1@booster:~
$ /usr/lib/cgi-bin/php5 -q test.php
starting
bool(true)
ending
13.58:je@1@booster:~
$
ps: wo stand eig. was von php? wg. confixx?
Indyk
Ich habe mich noch ein bisschen weiter informiert und vermute,
dass es nicht gehen wird.
Du könntest zu jeder vollen Stunde eine Skipt in Deiner crontab rumschreiben lassen, und die Miuntenwerte für die von Dir gemeinte Anwendung editieren…Aber das ist böses Fufu…
Hallo,
wird glaube ich nicht hinhauen weil die execution time von php
scripts serverseitig auf 30 Sek. limitiert ist
Wer sagt denn, dass du PHP-Scripte ausführen müsst?
Du kannst ja in einem kleinen Shell-Script die zufällige Zeit warten, und erst danach PHP starten.
Moritz
naja ich würde wie folgt vorgehen:
gehe jetzt mal von php aus:
<?PHP if(file_exists(running)) exit();<br />$rand = rand(1,10);
if($rand != 10) exit();
touch(running);
include("hier dein script");
nun machst du 2 cronjobs:
1 Cronjob der alle 2-3 Stunden die running Datei löscht
1 Cronjob der jede Minute dein Script Startet
sobald das der die Zufallszahl einmal 10 ist wird das Script ausgeführt und bis zum löschen der datei gesperrt.
wenn du dich ein bißchen mit php auskennst kannst du auch ein script schreiben was alle prüft ob die running datei 2 stunden alt ist und die erst dann löscht.
mal als ansatz…
Gruß
Phillip
Hallo,
nun machst du 2 cronjobs:
1 Cronjob der alle 2-3 Stunden die running Datei löscht
1 Cronjob der jede Minute dein Script Startet
Von solchen Setups würde ich abraten, weil relativ fehleranfällig sind.
Wenn z.B. das anlegen der Datei fehlschlägt (z.B. read-only-Dateisystem, Platte voll, Probleme mit den Berechtigungen etc.) dann läuft das Programm, dass alle 2-3 Stunden laufen soll auf einmal minütlich.
Wenn das dann 30 Minuten dauert und rechenintensiv ist, hat man nach einer halben Stunde ne load von 30 und das System wird unbenutzbar.
Oder wenn das script irgend welche resourcen exklusiv braucht kommt es vielleicht zum deadlock wenn zwei davon gleichzeitig laufen, keiner bemerkt und, und das script läuft überhaupt nicht mehr.
Grüße,
Moritz