/** * Create process schedules. * * @param Mage_Cron_Model_Schedule $schedule * * @return void */ protected function _createProcessSchedule($schedule) { $isNew = $schedule->isObjectNew(); $parts = explode('_', $schedule->getJobCode()); $scheduleWithItems = SixBySix_RealTimeDespatch_Model_Resource_Process_Schedule_Collection::getLastScheduleWithItems($parts[0]); $schedule = Mage::getModel('realtimedespatch/process_schedule')->load($schedule->getId(), 'cron_id')->setCronId($schedule->getId())->setStatus($schedule->getStatus())->setScheduled($schedule->getScheduledAt())->setExecuted($schedule->getExecutedAt())->setType($parts[1])->setEntity($parts[0]); if ($schedule->getStatus() == Mage_Cron_Model_Schedule::STATUS_MISSED) { $schedule->setExecuted(date('Y-m-d H:i:s')); } if (!$schedule->getParentId() && !$isNew && $scheduleWithItems->getId()) { $schedule->setParentId($scheduleWithItems->getParentId()); $schedule->setMessageId($scheduleWithItems->getMessageId()); $schedule->setExecutedWithItems($scheduleWithItems->getExecutedWithItems()); } $schedule->save(); return $schedule; }
/** * Run an import through a cron job * @param Aoe_Scheduler_Model_Schedule|Mage_Cron_Model_Schedule $cron */ public function process(Mage_Cron_Model_Schedule $cron) { //initialize the translations so that we are able to translate things. Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_ADMINHTML, Mage_Core_Model_App_Area::PART_TRANSLATE); $cronName = $cron->getJobCode(); $profile = str_replace('ho_import_', '', $cronName); $logHelper = Mage::helper('ho_import/log'); try { /** @var Ho_Import_Model_Import $import */ $import = Mage::getModel('ho_import/import'); $import->setProfile($profile); $import->process(); } catch (Exception $e) { $logHelper->log($logHelper->getExceptionTraceAsString($e), Zend_Log::CRIT); $cron->setStatus($cron::STATUS_ERROR); } $logHelper->done(); }
/** * Run operation in crontab * * @param Mage_Cron_Model_Schedule $schedule * @param bool $forceRun * @return bool */ public function processScheduledOperation($schedule, $forceRun = false) { $operation = Mage::getModel('enterprise_importexport/scheduled_operation')->loadByJobCode($schedule->getJobCode()); $result = false; if ($operation && ($operation->getStatus() || $forceRun)) { $result = $operation->run(); } return $result; }
/** * Process cron task * * @param Mage_Cron_Model_Schedule $schedule * @param $jobConfig * @param bool $isAlways * @return Mage_Cron_Model_Observer */ protected function _processJob($schedule, $jobConfig, $isAlways = false) { $runConfig = $jobConfig->run; if (!$isAlways) { $scheduleLifetime = Mage::getStoreConfig(self::XML_PATH_SCHEDULE_LIFETIME) * 60; $now = time(); $time = strtotime($schedule->getScheduledAt()); if ($time > $now) { return; } } $errorStatus = Mage_Cron_Model_Schedule::STATUS_ERROR; try { if (!$isAlways) { if ($time < $now - $scheduleLifetime) { $errorStatus = Mage_Cron_Model_Schedule::STATUS_MISSED; Mage::throwException(Mage::helper('cron')->__('Too late for the schedule.')); } } // Aoe_Scheduler: stuff from the original method was removed and refactored into the schedule module /* @var $schedule Aoe_Scheduler_Model_Schedule */ $schedule->runNow(!$isAlways); } catch (Exception $e) { $schedule->setStatus($errorStatus)->setMessages($e->__toString()); // Aoe_Scheduler: additional handling: Mage::dispatchEvent('cron_' . $schedule->getJobCode() . '_exception', array('schedule' => $schedule, 'exception' => $e)); Mage::dispatchEvent('cron_exception', array('schedule' => $schedule, 'exception' => $e)); Mage::helper('aoe_scheduler')->sendErrorMail($schedule, $e->__toString()); } $schedule->save(); return $this; }
/** * Dispatch For Cron Jobs */ public function dispatchCron(Mage_Cron_Model_Schedule $schedule) { $triggerCode = $schedule->getJobCode(); $events = $this->getEvents(Esendex_Sms_Model_Event::TRIGGER_TYPE_CRON, $triggerCode); $this->dispatch($events); }