Comment utiliser Redis pour annuler une commande en 15 minutes dans thinkphp5 ?
过去多啦不再A梦2017-06-06 09:52:43
0
5
1707
1. Je souhaite utiliser la file d'attente pour vérifier si la commande a été passée depuis plus de 15 minutes, si elle dépasse 15 minutes, je modifierai la base de données pour annuler l'expiration du délai, mais je ne sais pas par où commencer
Cette fonction peut être conçue pour déclencher le comportement de l'utilisateur. Par exemple, lorsque l'utilisateur vérifie la commande et détermine qu'elle n'a pas été payée et qu'elle a dépassé 15 minutes, le statut de la commande sera modifié en annulation de délai d'attente. Les commandes qui n'ont pas été consultées et dont le statut n'a pas été mis à jour pourront être mises à jour tôt le matin par des tâches planifiées. Lorsque le volume des commandes est important, il n'est pas recommandé de synchroniser le statut de toutes les commandes en temps réel, et cela n'a aucun sens.
Interrogation de la base de données : utilisez des tâches planifiées pour interroger la base de données afin d'interroger le traitement des commandes associées. Utilisez-la lorsque le volume n'est pas important. Cette méthode est simple, pratique et facile à maintenir dans les petits projets
.
Ring Queue : Référence : http://mp.weixin.qq.com/s/mvF...
Service de file d'attente : Utiliser le traitement de file d'attente différé Référence : http://tech.youzan.com/queuin...
Une meilleure solution consiste à utiliser une roue temporelle, qui est la file d'attente en anneau mentionnée ci-dessus Cela peut également être réalisé en utilisant la notification de l'espace clé Redis. Réglez le délai d'expiration sur 15 minutes, écoutez les événements de suppression de clé, et effectuez l'opération correspondante
Plan : Écrivez un script PHP, exécutez le processus démon, boucle while et vérifiez la bibliothèque. Si la commande prend plus de 15 minutes et que la commande n'est pas payée et non expédiée, l'opération d'annulation sera effectuée
Cette fonction peut être conçue pour déclencher le comportement de l'utilisateur. Par exemple, lorsque l'utilisateur vérifie la commande et détermine qu'elle n'a pas été payée et qu'elle a dépassé 15 minutes, le statut de la commande sera modifié en annulation de délai d'attente. Les commandes qui n'ont pas été consultées et dont le statut n'a pas été mis à jour pourront être mises à jour tôt le matin par des tâches planifiées. Lorsque le volume des commandes est important, il n'est pas recommandé de synchroniser le statut de toutes les commandes en temps réel, et cela n'a aucun sens.
Interrogation de la base de données : utilisez des tâches planifiées pour interroger la base de données afin d'interroger le traitement des commandes associées. Utilisez-la lorsque le volume n'est pas important. Cette méthode est simple, pratique et facile à maintenir dans les petits projets
.Ring Queue : Référence : http://mp.weixin.qq.com/s/mvF...
Service de file d'attente : Utiliser le traitement de file d'attente différé Référence : http://tech.youzan.com/queuin...
Une meilleure solution consiste à utiliser une roue temporelle, qui est la file d'attente en anneau mentionnée ci-dessus
Cela peut également être réalisé en utilisant la notification de l'espace clé Redis. Réglez le délai d'expiration sur 15 minutes, écoutez les événements de suppression de clé, et effectuez l'opération correspondante
N'est-il pas bon d'utiliser une minuterie
Pas besoin de Redis
Cela peut être réalisé avec MySQL
Plan :
.Écrivez un script PHP, exécutez le processus démon,
boucle while et vérifiez la bibliothèque. Si la commande prend plus de 15 minutes et que la commande n'est pas payée et non expédiée, l'opération d'annulation sera effectuée