Пример #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;
 }
Пример #2
0
 /**
  * postpone delivery
  */
 public function postponeDelivery($promotion_id, $date)
 {
     $date = explode("/", $date);
     $time = strtotime("{$date[2]}-{$date[1]}-{$date[0]}");
     $time += 7 * 3600;
     // 7am
     $data = array('parameters' => "promotion_id={$promotion_id}", 'controller' => "gift_voucher_send", 'scheduled_time' => $time);
     require_once 'models/common/common_scheduler.php';
     $Scheduler = new common_scheduler();
     $Scheduler->scheduleNewJob($data);
     return true;
 }