Beispiel #1
0
 /**
  * main action
  */
 public function mainAction()
 {
     $Scheduler = new common_scheduler();
     $Scheduler->setCacheable(false);
     // quick fix to reactivate zombie job
     // todo: convert scheduler to async script
     if (rand(0, 20) == 1) {
         $Scheduler->executeSql("UPDATE common_scheduler SET status = 0 WHERE status = 1 AND (now() - start_time) > INTERVAL '10 minutes'");
     }
     if ($Scheduler->anyPendingJobs() && ($lock_token = $Scheduler->lockPendingJobs()) > 0) {
         $jobs = $Scheduler->getLockedJobs($lock_token);
         if (is_array($jobs)) {
             foreach ($jobs as $job_data) {
                 $Scheduler->setJobStart($job_data['id']);
                 $result = $this->runJob($job_data);
                 $messages = trim(strip_tags(urldecode($result->messages)));
                 $Scheduler->setJobCompleted($job_data['id'], $result->status, $messages);
             }
         } else {
             msg("Scheduler: Invalid lock token!");
         }
     }
     return true;
 }