mysql - Comment effectuer une notification planifiée et une publication à temps en PHP?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-24 11:33:02
0
9
816

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 ^_^

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(9)
仅有的幸福

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

曾经蜡笔没有小新

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.

阿神

Utilisez simplement le programme pour continuer à brosser = =

伊谢尔伦

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.

巴扎黑

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

習慣沉默

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.

phpcn_u1582

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.

phpcn_u1582
websocket 

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

刘奇

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!