2017-10-11 8 views
0

Lorsqu'une application Laravel 5 tombe en panne (maintenance planifiée ou non), mais qu'elle est rétablie quelques minutes plus tard, Laravel sait-elle automatiquement pour rattraper et exécuter les tâches manquées? Si ce n'est pas le cas, quelle est la meilleure façon de gérer le rattrapage pour les tâches potentiellement manquées?Quelle est la bonne façon de rattraper les tâches Laravel manquées pendant la maintenance/les temps d'arrêt?

+0

Vous pouvez uniquement réexécuter un travail échoué. Je veux dire le travail qui est programmé que vous avez envoyé. – C2486

+0

Ne cherchant pas à exécuter de nouveaux travaux, il suffit d'avoir des tâches qui auraient dû et auraient été exécutées si le système n'avait pas été exécuté la prochaine fois que l'environnement a été rétabli. –

+0

De plus, cela dépend de la condition de votre requête, comme si vous récupériez des données dans une tâche planifiée, c'est '' today'' ou '' lastTaskDone'' si la deuxième condition était que cela fonctionnerait. – C2486

Répondre

0

Il semble que le système de planification des tâches soit un peu trop simple pour s'assurer qu'une tâche s'exécute après une interruption (par exemple, si elle s'exécute quotidiennement ou à des moments spécifiques); comme annoncé, il ne fait que courir des tâches sur le calendrier donné.

Essentiellement, les temps d'arrêt/maintenance permettent de "manquer le bus".

Pour assurer que les tâches critiques exécuter:

  • Ajouter un modèle/mécanisme pour stocker des informations sur le moment où les tâches critiques étaient la dernière exécution
  • Au lieu d'exécuter les tâches essentielles directement à partir du système de programmation, les envelopper dans la tâche (s) qui fonctionnent fréquemment pour vérifier si la tâche réelle a été la dernière exécution, puis les envoie, le cas échéant
    • la logique de base étant ici:
      • if (time() > ($task->lastRunTime + $task->intervalTime)) dispatch(...) ou;
      • if (time() >= $task->nextRunTime) dispatch(...)

Sur la base de votre application, la mise en œuvre spécifique de cette variera; La bonne chose à propos de l'utilisation d'un modèle est que vous pouvez facilement l'adapter aux besoins de votre application, comme le suivi des métriques.