getParameter('execute_verification', true)) { $this->setParameter('execute_verification', false); foreach (stTaskSchedulerImportConfiguration::getAll() as $configuration) { $parentConfig = $configuration->getParent() ? $configuration->getParent() : $configuration; if (null !== $parentConfig->getOption('preloaded_data_import') && stTaskScheluder::getTask($configuration->getId())->getStatus() == stTask::STATUS_RUNNING) { $task = stTaskScheluder::getTask($configuration->getId()); $this->getLogger()->info('Import został pominięty (powód: Oczekuje na zakończenie zadania **%task%**)', [ '%task%' => $task->getName(), ]); return false; } } $this->doCount(true); } } public function count(): int { $count = stTaskSchedulerImportPreloadedDataPeer::doCount($this->getCriteria()); return $count; } public function finished() { if (null !== $this->getParameter('import_hash_id')) { stTaskSchedulerImportPreloadedDataPeer::doDelete($this->getCriteria()); } else { Propel::getConnection()->executeQuery(sprintf('TRUNCATE TABLE %s', stTaskSchedulerImportPreloadedDataPeer::TABLE_NAME)); } } public function execute(int $offset): int { $c = $this->getCriteria(); $c->setOffset($offset); $c->setLimit(self::LIMIT); $c->addAscendingOrderByColumn(stTaskSchedulerImportPreloadedDataPeer::IMPORT_HASH_ID); $results = stTaskSchedulerImportPreloadedDataPeer::doSelect($c); if (empty($results)) { return $this->doCount(); } $limit = null; foreach ($results as $preloadedData) { $preloadedDataImport = $this->getPreloadedDataImport($preloadedData); if (null === $limit) { $limit = $preloadedDataImport->getLimit(); } try { $data = $preloadedData->getData(); $data['data_id'] = $preloadedData->getDataId(); $preloadedDataImport->process($data); $preloadedDataImport->clearStaticPools(); usleep($preloadedDataImport->getDelay()); } catch (stTaskSchedulerImportLogException $e) { $this->getLogger()->log($e->getCode(), $e->getMessage(), $e->getMessageParameters()); } $offset++; $limit--; if ($limit === 0) { break; } } return $offset; } protected function getPreloadedDataImport(stTaskSchedulerImportPreloadedData $preloadedData): stTaskSchedulerImportPreloadedDataAbstract { if (!isset($this->preloadedDataImport[$preloadedData->getImportHashId()])) { $configuration = stTaskSchedulerImportConfiguration::getByHashId($preloadedData->getImportHashId()); if ($configuration->getParent()) { $configuration = $configuration->getParent(); } $preloadedDataImportClass = $configuration->getOption('preloaded_data_import'); $this->preloadedDataImport[$preloadedData->getImportHashId()] = new $preloadedDataImportClass($this, $configuration); } return $this->preloadedDataImport[$preloadedData->getImportHashId()]; } protected function getCriteria(): Criteria { $c = new Criteria(); if (null !== $this->getParameter('import_hash_id')) { $c->add(stTaskSchedulerImportPreloadedDataPeer::IMPORT_HASH_ID, $this->getParameter('import_hash_id')); } return $c; } }