在等待输入时超时页面的好方法?

时间:2013-03-15 15:31:06

标签: php

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

我考虑过打印“订单将在5分钟内重置”,然后向脚本发送ajax请求,该脚本将睡眠()5分钟,然后取消订单。

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

4 个答案:

答案 0 :(得分:2)

向长时间运行的脚本发送ajax请求听起来不错。最终可能会运行大量正在运行的睡眠脚本,这会阻塞您的服务器。

一个cron工作并不是一个坏主意。它可以定期浏览数据库,查找过期的购物车。

如果到期查询很快,则可以更频繁地运行,例如每当有人向购物车添加商品或有人试图结帐时。

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

答案 1 :(得分:1)

  1. 首先,始终让用户知道发生了什么,因此打印“订单将在5分钟内重置”是一个好主意
  2. 我认为更好的方法是设置一个在5分钟内过期的cookie
  3. 然后......当/如果cookie过期,你做生意取消订单:)
  4. 希望有所帮助!

答案 2 :(得分:1)

保持php进程等待是一个非常糟糕的想法......它消耗了大量的系统资源,并且它不可扩展。

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

答案 3 :(得分:1)

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

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