Détail du message 84629.4

Message numéro 4 dans le sujet Exécution tache une fois par semaine.

  • 84629.4 en réponse à 84629.3 écrit par asellami

    27/10/2014 12:07


    Georges Njock-Bôt
    Rang : Membre
    Cela donne un résultat en effet.

    Par contre as-tu bien pris conscience des comportements (effets de bords) suivants ?


    • Ton implémentation de getNextExecutionDate() donne une date à J+7 à 22h59. Cela va aussi reprogrammer la tâche une semaine après la fin de son exécution et non pas le prochain dimanche à 22h59. Si ta tâche se termine le lundi à 00h01, cela va la reprogrammer au prochain lundi à 22h59. Au prochain coup elle se terminera peut-être mardi à 00h01, cela va la reprogrammer au mardi suivant à 22h59, ainsi de suite. Mais si c'est ce que tu recherche alors ok. Sauf qu'à ce moment-là, il ne faudrait peut-être pas forcer l'heure à 22h59. A toi de voir.


    • Deuxième chose plus embettante : en surchargeant getNextExecutionDate(), c'est TOUTES les tâches du projet qui se reprogrammeront à J+7 à 22h59. Je ne suis pas certain que ce soit le but recherché.


    • Troisième point plus anecdotique: Lorsqu'on surcharge getNextExecutionDate(), ce n'est plus nécéssaire de faire un
       $this->plannedTask->reSchedule($nextDate); 
      dans la classe de la tâche car le système le fait automatiquement pour toi à la fin de l'exécution de la tâche cf. task_PlannedtaskService::preSave().

    • Dernier point au cas où : Change calcule et stocke les dates en GMT par défaut. Donc selon le fuseau horaire où tu te trouves, la date calculée peut ne pas correspondre à la date locale que tu souhaites...



    Cordialement.

    Édité par Georges Njock-Bôt 27/10/2014 12:11


    "La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"

    Albert Einstein
 
1433 membres
Aucun membre connecté