Holaa
Ik zit met een vreemd probleem. Ik run elke 5 minuten een (pittige) cronjob op een server. Het is niet de bedoeling dat die weer opnieuw wordt uitgevoerd terwijl de ander nog niet is afgerond.
Ik dacht een makkelijke snippet te hebben gemaakt:
Als ik de file handmatig uitvoer is er niks aan de hand. Echter zodra ik een cronjob activeer die de url via CURL aanroept verwijdert hij de lockfile niet meer.
Overigens is het script nu nog niet zo zwaar dat hij in de lock zou moeten schieten. De cron staat op 5 minuten en de script execution time is ongeveer 1 minuut. Maar goed, dan nog zou hij de lockfile moeten verwijderen
Ik heb al geëxperimenteerd met een return; en een die() zoals je kunt zien. Maar beide hebben geen nuttig effect.
Heeft iemand een idee wat er hier fout gaat?
Overigens zie ik in de ftp wel steeds de modified date (laatst gewijzigd) veranderen als de cron wordt uitgevoerd. Dus 12:15:01, en 5 min later is de last modified date 12:20:02. Terwijl hij toch echt in de lock zit
Ik zit met een vreemd probleem. Ik run elke 5 minuten een (pittige) cronjob op een server. Het is niet de bedoeling dat die weer opnieuw wordt uitgevoerd terwijl de ander nog niet is afgerond.
Ik dacht een makkelijke snippet te hebben gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| <? public function action_heavytask() { if( file_exists( Kohana::$config->load('global.lockfile.heavytask') ) ) { $log = ORM::factory('log'); $currDateTime = new DateTime(); $log->log = 'Action heavy task stuck in lock'; $log->time = $currDateTime->format('Y-m-d H:i:s'); $log->type = 'Cronjob'; $log->save(); //die('Locked'); return; } $myfile = fopen(Kohana::$config->load('global.lockfile.heavytask'), "w") or die("Unable to open file!"); $txt = "locked"; fwrite($myfile, $txt); fclose($myfile); foreach( $heavytasks as $heavytask ) { //.......... } unlink( Kohana::$config->load('global.lockfile.heavytask') ); echo 'finished'; } |
Als ik de file handmatig uitvoer is er niks aan de hand. Echter zodra ik een cronjob activeer die de url via CURL aanroept verwijdert hij de lockfile niet meer.
Overigens is het script nu nog niet zo zwaar dat hij in de lock zou moeten schieten. De cron staat op 5 minuten en de script execution time is ongeveer 1 minuut. Maar goed, dan nog zou hij de lockfile moeten verwijderen

Ik heb al geëxperimenteerd met een return; en een die() zoals je kunt zien. Maar beide hebben geen nuttig effect.
Heeft iemand een idee wat er hier fout gaat?
Overigens zie ik in de ftp wel steeds de modified date (laatst gewijzigd) veranderen als de cron wordt uitgevoerd. Dus 12:15:01, en 5 min later is de last modified date 12:20:02. Terwijl hij toch echt in de lock zit
