/** * 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; }
/** * 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; }