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