2015-03-29 1 views
1

J'ai créé un code IPN qui permet à paypal de mettre à jour ma base de données pour un article acheté. Je pense à l'avance que la personne qui achète mon article, peut ne pas confirmer à la caisse, ou que, pendant qu'ils vérifient vérifier, quelqu'un d'autre peut cliquer sur le bouton acheter maintenant avant qu'il ne soit confirmé via paypal.Mettre à jour la base de données après 5 minutes

Le point à tout cela est, je veux trouver le meilleur moyen de résoudre ce problème. Mon idée est après qu'ils cliquent sur le bouton acheter maintenant il met l'article à en attente, et ils ont 5 minutes pour confirmer l'achat ou il est renvoyé à disponible.

S'il vous plaît aidez-moi .. Je peux fournir mon code si nécessaire.

Répondre

1

I Je suggère d'utiliser quelque chose comme Resque - il y a un port PHP (https://github.com/chrisboulton/php-resque). Lorsque l'utilisateur passe à PayPal, définissez l'état du produit à "réserver" et créez un travail Resque dont l'exécution est prévue dans 5 minutes à partir de maintenant.

  • Si l'utilisateur achète le produit, remplacez le statut «réservé» par «vendu».
  • Lorsque le travail Resque s'exécute après 5 minutes, il vérifie si l'état est "réservé", et si c'est le cas, il le remet à "disponible".
  • Si le statut est 'vendu', alors il ne fait rien. Si vous ne voulez pas utiliser Resque, vous pouvez faire quelque chose d'un peu plus simple comme un travail cron qui sélectionne tous les produits ayant le statut 'réservé' où l'état a été réglé plus de 5 minutes depuis. Ensuite, vous modifiez ce statut à "disponible" à nouveau. Vous pouvez exécuter ce cronjob toutes les 60 secondes. Cependant, cela peut entrer dans des conditions de course compliquées, et il sera moins flexible, donc j'implémenterais un système basé sur la file d'attente si vous le pouvez.

  • +0

    C'est exactement ce que je cherche! Vous rock, @blowski! – logicK

    0

    D'abord désolé que je ne peux pas commenter, cause de mon lvl ici. Donc, votre idée avec le verrouillage est convivial et 5 minutes serait ok. Mais je voudrais mettre à jour mon stock PayPal, lorsque le paiement est terminé. qui paie en premier ... Mais je programmer un script ajax qui vérifie le stock pour l'utilisateur, qui a cet article dans le panier et lorsque le stock a changé à 0 je ferais un message d'alerte comme

    alert('Item Xy changed his state to 0');