Aoe_Scheduler_Model_Observer::dispatch PHP Method

dispatch() public method

Process cron queue Generate tasks schedule Cleanup tasks schedule
public dispatch ( Varien_Event_Observer $observer )
$observer Varien_Event_Observer
    public function dispatch(Varien_Event_Observer $observer)
    {
        if (!Mage::getStoreConfigFlag('system/cron/enable')) {
            return;
        }
        $processManager = Mage::getModel('aoe_scheduler/processManager');
        /* @var $processManager Aoe_Scheduler_Model_ProcessManager */
        $processManager->watchdog();
        $scheduleManager = Mage::getModel('aoe_scheduler/scheduleManager');
        /* @var $scheduleManager Aoe_Scheduler_Model_ScheduleManager */
        $scheduleManager->logRun();
        $helper = Mage::helper('aoe_scheduler');
        /* @var Aoe_Scheduler_Helper_Data $helper */
        $includeJobs = $helper->addGroupJobs((array) $observer->getIncludeJobs(), (array) $observer->getIncludeGroups());
        $excludeJobs = $helper->addGroupJobs((array) $observer->getExcludeJobs(), (array) $observer->getExcludeGroups());
        // Coalesce all jobs that should have run before now, by job code, by marking the oldest entries as missed.
        $scheduleManager->skipMissedSchedules();
        // Iterate over all pending jobs
        foreach ($scheduleManager->getPendingSchedules($includeJobs, $excludeJobs) as $schedule) {
            /* @var Aoe_Scheduler_Model_Schedule $schedule */
            $schedule->process();
        }
        // Generate new schedules
        $scheduleManager->generateSchedules();
        // Clean up schedule history
        $scheduleManager->cleanup();
    }

Usage Example

 /**
  * @test
  */
 public function scheduleJobAndRunCron()
 {
     $sameRequest = false;
     if ($sameRequest) {
         // dispatch event
         $event = new Varien_Event_Observer(array('include_groups' => array($this->groups['groupA'])));
         $observer = new Aoe_Scheduler_Model_Observer();
         $observer->dispatch($event);
     } else {
         $this->exec('cd ' . Mage::getBaseDir() . '/shell && /usr/bin/php scheduler.php --action cron --mode always --includeGroups ' . $this->groups['groupA']);
     }
     $schedulesJobWithGroupA = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupA']->getJobCode());
     $this->assertCount(1, $schedulesJobWithGroupA);
     foreach ($schedulesJobWithGroupA as $schedule) {
         /* @var $schedule Aoe_Scheduler_Model_Schedule */
         $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $schedule->getStatus());
     }
     $schedulesJobWithGroupB = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupB']->getJobCode());
     $this->assertCount(0, $schedulesJobWithGroupB);
     $schedulesJobWithGroupAandB = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupAandB']->getJobCode());
     $this->assertCount(1, $schedulesJobWithGroupAandB);
     foreach ($schedulesJobWithGroupAandB as $schedule) {
         /* @var $schedule Aoe_Scheduler_Model_Schedule */
         $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $schedule->getStatus());
     }
 }
All Usage Examples Of Aoe_Scheduler_Model_Observer::dispatch
Aoe_Scheduler_Model_Observer