$diff = ($this->getMilliTime() - $currentTask['task_last_activity']) * 1000;
// Is the interval delay reached?
- if ($diff < $currentTask['task_interval_delay']) {
+ if ((($diff < $currentTask['task_interval_delay']) && ($currentTask['task_max_runs'] == 0)) || (($currentTask['task_total_runs'] == $currentTask['task_max_runs']) && ($currentTask['task_max_runs'] > 0))) {
// Should we update the task from startup?
if ($updateTask === true) {
// Update the task before leaving
// Set last activity
$currentTask['task_last_activity'] = $this->getMilliTime();
+ // Count this run
+ $currentTask['task_total_runs']++;
+
// Update the task
$this->updateTask($currentTask);
'task_registered' => $this->getMilliTime(),
// Last activity timestamp
'task_last_activity' => 0,
+ // Total runs of this task
+ 'task_total_runs' => 0,
// Task instance itself
'task_instance' => $taskInstance,
// Startup delay in milliseconds
'task_startup_delay' => $this->getConfigInstance()->getConfigEntry('task_' . $taskName . '_startup_delay'),
// Interval time (delay) in milliseconds before this task is executed again
'task_interval_delay' => $this->getConfigInstance()->getConfigEntry('task_' . $taskName . '_interval_delay'),
+ // How often should this task run?
+ 'task_max_runs' => $this->getConfigInstance()->getConfigEntry('task_' . $taskName . '_max_runs'),
);
// Add the entry
$this->debugOutput('TASK-HANDLER: Task ' . $taskName .
' (taskInstance=' . $taskInstance->__toString() . ')' .
', startupDelay=' . $taskEntry['task_startup_delay'] . 'ms' .
- ', intervalDelay=' . $taskEntry['task_interval_delay'] . 'ms registered.'
+ ', intervalDelay=' . $taskEntry['task_interval_delay'] . 'ms' .
+ ', maxRuns=' . $taskEntry['task_max_runs'] . ' times registered.'
);
}