Пример #1
0
 public function run()
 {
     /** @var \Octo\System\Store\JobStore $jobStore */
     $jobStore = Store::get('Job');
     /** @var \Octo\System\Store\ScheduledJobStore $scheduleStore */
     $scheduleStore = Store::get('ScheduledJob');
     // Clean up existing Scheduler jobs from the database:
     $jobs = $jobStore->getByType('Octo.System.Scheduler');
     foreach ($jobs as $job) {
         if ($job->getId() != $this->job->getId()) {
             Manager::delete($job);
         }
     }
     // Create the next Scheduler job:
     Manager::create($this->job, Job::PRIORITY_HIGH, 5);
     // Schedule other jobs:
     $jobs = $scheduleStore->getJobsToSchedule();
     foreach ($jobs as $item) {
         $job = new Job();
         $job->setType($item->getType());
         $data = json_decode($item->getData(), true);
         if (!empty($data) && is_array($data)) {
             $job->setData($data);
         }
         $job = Manager::create($job);
         $item->setCurrentJob($job);
         $scheduleStore->save($item);
     }
     return true;
 }
Пример #2
0
 /**
  * @param Job $job
  * @param int $priority
  * @param int $delay (seconds)
  * @return Job
  */
 public static function create(Job $createJob, $priority = Job::PRIORITY_NORMAL, $delay = 0)
 {
     $createJob->setDateCreated(new \DateTime());
     $createJob->setDateUpdated(new \DateTime());
     $createJob->setStatus(0);
     if (!$createJob->getData()) {
         $createJob->setData([]);
     }
     $job = self::save($createJob);
     if (is_null($job)) {
         $newData = $createJob->toArray();
         unset($newData['id']);
         $job = self::save(new Job($newData));
         if (is_null($job)) {
             throw new \Exception('Failed to create job: ' . $createJob->getType());
         }
     }
     $job = self::queue($job, $priority, $delay);
     return $job;
 }