【发布时间】:2012-06-07 15:45:19
【问题描述】:
当从购物篮中添加或删除商品时,我网站上的商店会调整商品数量。但是,如果有人来到该站点并将一件商品中的 10 件添加到购物篮中并且没有删除这 10 件商品就离开了,那么他们将永远不会返回到数据库中。
如果有人在将商品从购物篮中取出之前离开网站,我该如何补充商品数量?也许是一个cron?
【问题讨论】:
当从购物篮中添加或删除商品时,我网站上的商店会调整商品数量。但是,如果有人来到该站点并将一件商品中的 10 件添加到购物篮中并且没有删除这 10 件商品就离开了,那么他们将永远不会返回到数据库中。
如果有人在将商品从购物篮中取出之前离开网站,我该如何补充商品数量?也许是一个cron?
【问题讨论】:
用户将物品放入购物篮后是否需要立即“保留”?
当用户预订项目时,将其预订时间存储在表格中。在计算产品的可用项目数时,减去当前保留的项目数。
当/如果用户为该项目付款时,将该项目从保留表中移除并将其标记为已购买。
然后使用 cron 删除在时间 x 之后仍保留在保留表中的所有项目。
这样做的缺点是用户购物篮将在时间x 之后清空,因此您必须告知用户他们还有多少时间可以支付他们的物品。
这更适合需求量大的商品,这些商品可能在付款前就缺货。例如,活动门票。
不要在用户将商品放入购物篮时将其标记为已保留,并在用户付款时再次检查库存。如果产品在他们将商品放入购物篮后已经缺货,则显示错误。
这更容易,更适合低需求的产品。
【讨论】:
编写一个脚本来清理陈旧的备份(例如,最后一次访问是在 2 小时前)并在 cron 中调用它。
【讨论】:
您可以创建一个 cron 作业,该作业会在商品放入购物车后每隔 X 小时自动从客户购物车中删除元素,但这可能会从购物车中删除仍在被活跃用户使用的商品,因此这可能会被忽视.
一种做你想做的事的方法也是使用 JavaScript 来捕捉用户关闭网站/去 afk X 小时。一旦任何一个元素被触发,您就可以进行 AJAX 调用以从购物车中删除商品并相应地更新网站。这似乎是解决您的问题“当他们离开网站时”最直接的解决方案,但如果 cookie 被客户端本身破坏,则不会真正解决问题。
无论哪种方式,您都需要考虑一种方法来确保客户端、会话和数据库上的数据同步,以确保没有物品是“孤立的”,并且不会对不存在的物品进行购买。
【讨论】:
首先,很难确定用户何时离开网站并且不会返回。有很多方法,但并非所有方法都是万无一失的。我在下面详细介绍的最好的一个:
访问者可以是注册用户,也可以是尚未注册的新用户。您的代码应将购物车内容连同添加时间一起保存在数据库表中。记录需要与用户标识 - 已注册或未注册。注册后,您只需将注册用户的 ID 保存在购物车表中即可。如果是未注册用户,则需要使用 cookie 并在购物车表和 cookie 上保存 ID。
如果用户在特定时间段内离开并返回,例如1 小时后,用户可以看到购物车内容完好无损。
同时,您需要编写一个脚本来查找购物车中超过 1 小时的内容,然后将其删除并将库存退回到您的库存中。您可以设置一个 cron 每隔几分钟运行一次此脚本,例如15分钟等。
如果用户在此过程运行后返回,则购物车将不包含添加的商品,用户将需要再次添加它们。
【讨论】:
在他们完全完成购买之前,不要从您的库存中删除数量。
【讨论】:
为此使用 cookie。我在我的客户商店使用它的方法。 示例:http://magazinsvarki.ru/
【讨论】: