5分钟后更新数据库

时间:2015-03-29 20:25:40

标签: php mysqli paypal-ipn

我创建了一个IPN代码,允许PayPal为购买的商品更新我的数据库。虽然购买我的物品的人可能不会在结账时确认,或者当他们确认退房时,我正在考虑,但是在通过paypal确认之前,其他人可能会点击立即购买按钮。

关键是,我想弄清楚解决这个问题的最佳方法。我的想法是,在他们点击立即购买按钮后,它将项目设置为待处理,他们有5分钟的时间来确认购买或将其发送回可用。

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

2 个答案:

答案 0 :(得分:1)

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

  • 当用户转到PayPal时,将产品的状态设置为“保留”,并创建一个计划在5分钟后运行的Resque作业。
  • 如果用户购买产品,请将状态从“保留”更改为“已售出”。
  • 当Resque作业在5分钟后运行时,它会检查状态是否为“保留”,如果是,则将其更改回“可用”。
  • 如果状态为“已售出”,则表示无效。

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

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

答案 1 :(得分:0)

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

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