5分钟后更新数据库

Update database after 5 minutes

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

所有这一切的关键是,我想找出解决此问题的最佳方法。我的想法是,在他们点击“立即购买”按钮后,将商品设置为待定状态,他们有 5 分钟时间确认购买,否则商品将被送回可用状态。

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

首先抱歉我不能发表评论,因为我的等级在这里。所以你锁定它的想法是用户友好的,5 分钟就可以了。但我会在付款完成后更新我的库存。谁先付款...但是我会编写一个 ajax 脚本来检查用户的库存,谁在篮子里有这个项目,当库存变为 0 时,我会发出一条警告消息,如

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

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

  • 当用户访问 PayPal 时,将产品状态设置为 'reserved',并创建一个计划在 运行 5 分钟后的 Resque 作业。
  • 如果用户购买了产品,将状态从'reserved'更改为'sold'。
  • 当 Resque 作业在 5 分钟后 运行s 时,它检查状态是否为 'reserved',如果是,则将其更改回 'available'。
  • 如果状态是'sold',则什么都不做。

如果您不想使用 Resque,那么您可以做一些更简单的事情,例如选择状态为 'reserved' 且状态设置超过 5 的所有产品的 cron 作业几分钟前。然后您再次将该状态更改为 'available'。您可以每 60 秒 运行 该 cronjob。

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