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

passage en config du max_time_exection

parent ff2000ab
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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,
+15 −1
Original line number Diff line number Diff line
@@ -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 
@@ -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
+16 −5
Original line number Diff line number Diff line
@@ -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 !');
@@ -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/>");
@@ -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;
            }
+6 −0
Original line number Diff line number Diff line
@@ -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