/** * Akce pro spuštění importu dat, která jsou již uložena v TEMP složce na tomto serveru * @param int $task */ public function actionImportMiningResults($task) { //načtení příslušné úlohy try { $task = $this->tasksFacade->findTask($task); $miningDriver = $this->minersFacade->getTaskMiningDriver($task, $task->miner->user); } catch (\Exception $e) { //pokud nebyla nalezena příslušná úloha, není co importovat $this->terminate(); return; } //import budeme provádět pouze v případě, že zatím neběží jiný import (abychom předešli konfliktům a zahlcení serveru) if ($task->importState == Task::IMPORT_STATE_WAITING) { //zakážeme ukončení načítání ignore_user_abort(true); //označíme částečný probíhající import $taskState = $task->getTaskState(); $importData = $taskState->getImportData(); if (empty($importData)) { $this->terminate(); } $taskState->importState = Task::IMPORT_STATE_PARTIAL; $this->tasksFacade->updateTaskState($task, $taskState); //provedeme import plného PMML (klidně jen částečných výsledků) a zaktualizujeme stav úlohy $taskState = $miningDriver->importResultsPMML(); $this->tasksFacade->updateTaskState($task, $taskState); //spustíme další dílší import RequestHelper::sendBackgroundGetRequest($this->getBackgroundImportLink($task)); } $this->terminate(); }
/** * Akce pro import výsledků * @param int */ public function actionReadMiningImportResults($id) { //zakážeme ukončení skriptu při zavření přenosového kanálu ignore_user_abort(true); //najdeme úlohu a mining driver $task = $this->findTaskWithCheckAccess($id); $miningDriver = $this->minersFacade->getTaskMiningDriver($task, $this->currentUser); //import budeme provádět pouze v případě, že zatím neběží jiný import (abychom předešli konfliktům a zahlcení serveru) if ($task->importState == Task::IMPORT_STATE_WAITING) { //označíme částečný probíhající import $taskState = $task->getTaskState(); $taskState->importState = Task::IMPORT_STATE_PARTIAL; $this->tasksFacade->updateTaskState($task, $taskState); //provedeme import plného PMML (klidně jen částečných výsledků) a zaktualizujeme stav úlohy $taskState = $miningDriver->importResultsPMML(); $this->tasksFacade->updateTaskState($task, $taskState); //spustíme další dílší import RequestHelper::sendBackgroundGetRequest($this->getAbsoluteLink('self', [], Link::SELF, true)); } $this->sendTextResponse(time() . ' DONE ' . $this->action); }