Loading config/unicaen-evenement.global.php.dist +4 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,10 @@ use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionService; return [ 'unicaen-evenement' => [ // Temps d'execution maximum pour le traitement des événements en console // données en seconde 'max_time_execution' => 300, 'service' => [ // Évènements de base Type::COLLECTION => EvenementCollectionService::class, Loading readme.md +15 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ Un type d'événement a besoin des informations suivantes : * une liste de paramètres (facultative) * une période de recursion (facultative) (**TODO modifier le formulaire pour permettre la saisie de la période de récurence**) Dans des fin de meilleure implémentation, il est aussi recommendé de déclarer une constante pour avoir accés rapidement au type d'événement. Dans des fin de meilleure implémentation, il est aussi recommendé de déclarer une constante pour avoir accès rapidement au type d'événement. Ces déclarations peuvent être faite dans le fichier Provider\Event\EventsProvider.php. ```php Loading Loading @@ -116,3 +116,17 @@ Déclaration dans la crontab # - Traitement des évènements en attente */1 * * * * root cd /var/www/html && php public/index.php traiter-evenements 1> /dev/null 2>&1 ``` --- Temps d'exectution des événements === Dans le fichier de configuration ```unicaen-evenement.global.php```, modifier la clé 'max_time_execution' pour stoper automatiquement les événements trop long ```php return [ 'unicaen-evenement' => [ 'max_time_execution' => 300, ], ]; ``` No newline at end of file src/UnicaenEvenement/Controller/EvenementConsoleController.php +16 −5 Original line number Diff line number Diff line Loading @@ -23,17 +23,28 @@ class EvenementConsoleController extends AbstractConsoleController use JournalServiceAwareTrait; /** * Temps d'exécution maximal (sec) du script de traitement des événements * @var int $maxExecutionTime * @desc Temps d'exécution maximal (sec) du script de traitement des événements * !! celui-ci doit être en adéquation avec le cycle d'exécution du script de traitement des événements en attente dans la crontab du serveur * Cf cle de config ['unicaen-evenement']['max_time_execution'] * vraleur par défaut : 300s * @file /etc/crontab */ const MAX_EXECUTION_TIME = 60; protected $maxExecutionTime = 300; public function getMaxExecutionTime(): int { return $this->maxExecutionTime; } public function setMaxExecutionTime(int $maxExecutionTime): void { $this->maxExecutionTime = $maxExecutionTime; } public function traiterEvenementsAction(): void { $request = $this->getRequest(); $texte = ""; var_dump("ICI"); if (!$request instanceof ConsoleRequest) { throw new RuntimeException('Cette action doit être appelée depuis une console !'); Loading @@ -45,7 +56,7 @@ class EvenementConsoleController extends AbstractConsoleController 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($executionTime >= $this->maxExecutionTime) { // if(true) { // pour les test $log = $journal->getLog(); $log .= sprintf("-----------<br/>"); Loading Loading @@ -82,7 +93,7 @@ class EvenementConsoleController extends AbstractConsoleController foreach ($evenements as $evenement) { // calcul du temps d'exécution $executionTime = (new DateTime())->getTimestamp() - $start->getTimestamp(); if ($executionTime >= self::MAX_EXECUTION_TIME) { if ($executionTime >= $this->maxExecutionTime) { // si le temps d'exécution maximal est dépassé ; on quitte la procédure break; } Loading src/UnicaenEvenement/Controller/EvenementConsoleControllerFactory.php +6 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,12 @@ class EvenementConsoleControllerFactory { $controller->setEtatEvenementService($etatService); $controller->setJournalService($journalService); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $controller->setMaxExecutionTime(intval($max_time_execution)); } return $controller; } } No newline at end of file Loading
config/unicaen-evenement.global.php.dist +4 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,10 @@ use UnicaenEvenement\Service\EvenementCollection\EvenementCollectionService; return [ 'unicaen-evenement' => [ // Temps d'execution maximum pour le traitement des événements en console // données en seconde 'max_time_execution' => 300, 'service' => [ // Évènements de base Type::COLLECTION => EvenementCollectionService::class, Loading
readme.md +15 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ Un type d'événement a besoin des informations suivantes : * une liste de paramètres (facultative) * une période de recursion (facultative) (**TODO modifier le formulaire pour permettre la saisie de la période de récurence**) Dans des fin de meilleure implémentation, il est aussi recommendé de déclarer une constante pour avoir accés rapidement au type d'événement. Dans des fin de meilleure implémentation, il est aussi recommendé de déclarer une constante pour avoir accès rapidement au type d'événement. Ces déclarations peuvent être faite dans le fichier Provider\Event\EventsProvider.php. ```php Loading Loading @@ -116,3 +116,17 @@ Déclaration dans la crontab # - Traitement des évènements en attente */1 * * * * root cd /var/www/html && php public/index.php traiter-evenements 1> /dev/null 2>&1 ``` --- Temps d'exectution des événements === Dans le fichier de configuration ```unicaen-evenement.global.php```, modifier la clé 'max_time_execution' pour stoper automatiquement les événements trop long ```php return [ 'unicaen-evenement' => [ 'max_time_execution' => 300, ], ]; ``` No newline at end of file
src/UnicaenEvenement/Controller/EvenementConsoleController.php +16 −5 Original line number Diff line number Diff line Loading @@ -23,17 +23,28 @@ class EvenementConsoleController extends AbstractConsoleController use JournalServiceAwareTrait; /** * Temps d'exécution maximal (sec) du script de traitement des événements * @var int $maxExecutionTime * @desc Temps d'exécution maximal (sec) du script de traitement des événements * !! celui-ci doit être en adéquation avec le cycle d'exécution du script de traitement des événements en attente dans la crontab du serveur * Cf cle de config ['unicaen-evenement']['max_time_execution'] * vraleur par défaut : 300s * @file /etc/crontab */ const MAX_EXECUTION_TIME = 60; protected $maxExecutionTime = 300; public function getMaxExecutionTime(): int { return $this->maxExecutionTime; } public function setMaxExecutionTime(int $maxExecutionTime): void { $this->maxExecutionTime = $maxExecutionTime; } public function traiterEvenementsAction(): void { $request = $this->getRequest(); $texte = ""; var_dump("ICI"); if (!$request instanceof ConsoleRequest) { throw new RuntimeException('Cette action doit être appelée depuis une console !'); Loading @@ -45,7 +56,7 @@ class EvenementConsoleController extends AbstractConsoleController 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($executionTime >= $this->maxExecutionTime) { // if(true) { // pour les test $log = $journal->getLog(); $log .= sprintf("-----------<br/>"); Loading Loading @@ -82,7 +93,7 @@ class EvenementConsoleController extends AbstractConsoleController foreach ($evenements as $evenement) { // calcul du temps d'exécution $executionTime = (new DateTime())->getTimestamp() - $start->getTimestamp(); if ($executionTime >= self::MAX_EXECUTION_TIME) { if ($executionTime >= $this->maxExecutionTime) { // si le temps d'exécution maximal est dépassé ; on quitte la procédure break; } Loading
src/UnicaenEvenement/Controller/EvenementConsoleControllerFactory.php +6 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,12 @@ class EvenementConsoleControllerFactory { $controller->setEtatEvenementService($etatService); $controller->setJournalService($journalService); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $controller->setMaxExecutionTime(intval($max_time_execution)); } return $controller; } } No newline at end of file