Commit ff2000ab authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Ajout d'un process de déblocage du journal pour les événements en cours

parent 5a161263
Loading
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -33,12 +33,35 @@ class EvenementConsoleController extends AbstractConsoleController
    {
        $request = $this->getRequest();
        $texte = "";
        var_dump("ICI");

        if (!$request instanceof ConsoleRequest) {
            throw new RuntimeException('Cette action doit être appelée depuis une console !');
        }

        //Si un journal est en cours depuis trop longtemp, on le met en echec dans le journal pour cause de timeout
        //Celà évite d'être bloqué car un traitement est resté dans l'état En cours
        $journal = $this->getJournalService()->getDernierJournal();
        if(isset($journal) && $journal->getEtat()->getCode() == Etat::EN_COURS){
            $time = new DateTime();
            $executionTime = $time->getTimestamp() - $journal->getDate()->getTimestamp();
            if($executionTime >= self::MAX_EXECUTION_TIME) {
//            if(true) { // pour les test
                $log = $journal->getLog();
                $log .= sprintf("-----------<br/>");
                $log .= sprintf("Mise en echec le %s à %s car temps d'exécution trop long <br/>",
                    $time->format('d/m/Y'), $time->format('H:i')
                );
                $log .= sprintf("-----------<br/>");
                $this->getConsole()->writeLine("\n* " . ($titre = "Mise en échec du journal #".$journal->getId()) . " *\n", ColorInterface::RED);
                $journal->setLog($log);
                $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::ECHEC));
                $this->getJournalService()->update($journal);
            }
        }

        if ($this->getJournalService()->isRunning()) {
            throw new RuntimeException('Un traitement est déjà en cours !');
            throw new \RuntimeException('Un traitement est déjà en cours !');
        }

        $journal = new Journal();