0

客户去购物车。Shoppingcart 添加到 DB,因为它需要通过外部服务支付。5分钟后如何删除购物车?

我想打印“订单将在 5 分钟内重置”,然后向脚本发送一个 ajax 请求,该脚本将 sleep() 5 分钟,然后取消订单。

有没有更好的办法?这肯定比每 5 分钟运行一次 cron 要好。

4

4 回答 4

2

向长时间运行的脚本发送 ajax 请求听起来是个坏主意。您最终可能会运行大量睡眠脚本,这将阻塞您的服务器。

cron 工作并不是一个坏主意。它可以定期在数据库中运行以查找过期的购物车。

如果到期查询很快,它可以更频繁地运行,例如,每当有人向购物车添加东西时,或者当有人试图结账时。

另一种方法是将过期的篮子留在数据库中。当用户尝试结帐时,您会检查当时是否过期,让用户知道它已过期并将其删除。可以在每日/每周的整理工作中删除由于用户永远不会回来而没有被删除的过期篮子。

于 2013-03-15T15:36:20.907 回答
1
  1. 首先,总是让用户知道发生了什么,所以打印“订单将在 5 分钟内重置”是个好主意
  2. 我认为更好的方法是设置一个 5 分钟后过期的 cookie
  3. 然后...当/如果 cookie 过期,您是否需要取消订单:)

希望有帮助!

于 2013-03-15T15:36:49.923 回答
1

让一个 php 进程等待是一个非常糟糕的主意......它消耗大量系统资源并且它不可扩展。

一个 cron-job 可能需要更多的努力来实现,但从长远来看它会对你有所帮助。

于 2013-03-15T15:37:20.737 回答
1

我要做的是expire_time在数据库行中设置一个。如果他们的下一个请求超过了那个时间。如果他们在那之后回到篮子,删除他们的篮子。

如果不出意外,请运行该 cron 来清理每天左右被丢弃的篮子。

于 2013-03-15T15:37:58.020 回答