5分钟后更新数据库


Update database after 5 minutes

我创建了一个IPN代码,允许贝宝为购买的物品更新我的数据库。不过,我提前考虑,购买我商品的人可能不会在结账时确认,或者在他们确认结账时,其他人可能也会在通过贝宝确认之前点击"立即购买"按钮。

关键是,我想找出解决这个问题的最佳方法。我的想法是,在他们点击"立即购买"按钮后,它会将商品设置为待定,他们有5分钟的时间确认购买或将其发送回可用状态。

请帮忙。。如果需要,我可以提供我的代码。

我建议使用类似Resque的东西-有一个PHP端口(https://github.com/chrisboulton/php-resque)。

  • 当用户转到PayPal时,将产品的状态设置为"保留",并创建一个Resque作业,计划从现在起运行5分钟
  • 如果用户购买了产品,请将状态从"已预订"更改为"已售出"
  • 当Resque作业在5分钟后运行时,它会检查状态是否为"保留",如果是,则会将其更改回"可用"
  • 如果状态为"已售出",则它不会执行任何操作

如果你不想使用Resque,那么你可以做一些更简单的事情,比如cron作业,它选择所有状态为"保留"的产品,其中状态是在5分钟前设置的。然后您将该状态再次更改为"可用"。您可以每60秒运行一次cronjob。

然而,这可能会进入复杂的竞争条件,而且灵活性会降低,所以如果可以的话,我会实现一个基于队列的系统。

首先很抱歉我不能发表评论,因为我的lvl在这里。所以你锁定它的想法是用户友好的,5分钟就可以了。但我会PayPal更新我的股票,当付款完成。谁先付款。。。但我会编写一个ajax脚本,为用户检查库存,用户在购物篮中有这个项目,当库存变为0时,我会发出类似的警告消息

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