recherche

Maison  >  Questions et réponses  >  le corps du texte

mysql - Comment effectuer une notification planifiée et une publication à temps en PHP?

Exigences/scénarios :

  1. Par exemple, définissez un article à publier le 2018-5-22 13:51:16.

  2. Avertissez-moi dans trois jours.

  3. Les messages sont automatiquement supprimés après leur expiration.

……

Attendez, ce type de demande consiste à faire quelque chose automatiquement à un certain moment. Cela semble n'avoir rien à voir avec la file d'attente. Cela nécessite-t-il un middleware ou un autre moment, ou un processus résident ou quelque chose du genre.

Je crois comprendre que les tâches à effectuer sont placées dans un tableau ligne par ligne, puis qu'un processus est continuellement actualisé et que les tâches qui répondent au nœud temporel sont supprimées et exécutées.

Vous voulez savoir de quoi est faite la solution mature pour ce scénario ?

Merci ^_^

曾经蜡笔没有小新曾经蜡笔没有小新2782 Il y a quelques jours902

répondre à tous(9)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-24 11:35:02

    Utilisez des tâches différées, https://github.com/ouqiang/go...

    Comment mettre en œuvre des tâches différées

    1. Implémentez-le vous-même, utilisez la roue du temps ou un petit tas de racines

    2. Utilisez la notification Redis Keyspace

    3. beanstalkd

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-24 11:35:02

    L'élément principal de l'affiche devrait être DelayQueue, qui est le service de file d'attente de messages retardés. Pour des scénarios spécifiques, veuillez vous référer à :
    1 Le service d'annulation automatique de commande de Taobao
    2 Le service de notification par SMS de commande d'Ele.me, etc.
    Implémentez une minuterie basée sur la méthode d'attente/notification.

    répondre
    0
  • 阿神

    阿神2017-05-24 11:35:02

    Utilisez simplement le programme pour continuer à brosser = =

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:35:02

    Vous pouvez utiliser les tâches planifiées crontab pour le résoudre et vous pouvez concevoir l'interface Php pour qu'elle soit appelée tous les jours, heures et minutes.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-24 11:35:02

    Ajoutez un champ temporel, puis portez des jugements pertinents au niveau de la couche modèle

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-24 11:35:02

    Brossage du programme, mais la pression de la base de données doit être prise en compte.
    Vous pouvez placer toutes les tâches dans la file d'attente, retirer le script de la file d'attente dans une boucle infinie, comparer les points temporels et renvoyer les tâches au module d'exécution lorsqu'il arrive. Si le temps n'est pas écoulé, continuez de l'autre côté et entrez dans la file d'attente.

    Deux files d'attente. Par exemple, file d'attente à exécuter : TasteList ; file d'attente à exécuter immédiatement : runList.
    Divisez la récupération des tâches et l'exécution des tâches en différents processus :
    1. Récupération des tâches : le script extrait les tâches de TasteList en boucle, détermine le moment précis et pousse la tâche vers la file d'attente runList lorsque le temps est écoulé. Si c'est inférieur au point, continuez à le pousser dans TasteList ;
    2 Exécutez la tâche : parcourez la runList pour la faire apparaître et exécutez-la dès qu'il y a une tâche.

    Lorsque le volume est important, vous pouvez simplement ouvrir quelques processus selon vos besoins, et il n'est pas nécessaire de penser à répéter l'exécution.

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:35:02

    Utilisez simplement la fonction de tâche planifiée du système pour déclencher un script. Vous pouvez décider de ce que fait le script et comment le faire. Vous pouvez également vous référer à la réponse ci-dessus.
    D'une manière générale, un script à haute fréquence suffit (par exemple, une fois par minute ou une fois toutes les 5 minutes). Vous pouvez juger du temps dans le script puis appeler des tâches de différentes fréquences. C'est beaucoup plus facile à gérer que de configurer. tâches planifiées séparément pour chaque script de fréquence.

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:35:02

    websocket 

    Ou utilisez la workerman swoolefonction de tâche planifiée

    répondre
    0
  • 怪我咯

    怪我咯2017-05-24 11:35:02

    C'est-à-dire que vous enregistrez les données, puis créez un script pour les détecter en continu. . Par exemple, détectez une fois toutes les minutes

    répondre
    0
  • Annulerrépondre