我正在为网站开发购物车,并想知道在用户点击“添加到购物车”后我应该以什么方式存储产品ID。
我应该将它们存储在会话中 - 例如
$_SESSION['cart'][$productid]++;
这会给负载下的服务器带来压力吗?或者这是最好的方式吗?
或者我应该创建临时数据库表,将信息存储在那里,并在处理完订单后删除?
答案 0 :(得分:3)
我肯定会将它们存储在数据库中,但不是每次都创建一个临时表。我建议你保留一张包含所有未完成订单的表以及用户的标识符。
这将持续比会话更长的时间,在用户注销后保留所有内容并在该用户再次登录后可用。当用户登录时,将其标识符保留在会话中。
编辑:连接到数据库时消耗资源,这就是为数据库服务器所做的事情。与小表的连接几乎没有使用 - 我的意思是,您可能只是在显示购物车时执行大量查询。如果你的网站因为在一张小桌子上保存了一个奇怪的行而无法处理额外的压力,那么你将从销售中获得足够的钱购买更大的服务器:)
答案 1 :(得分:1)
您绝对应该使用数据库表来存储项目。 登录用户会很感激,如果他们在一段时间后回来,他们不必再次抓住所有物品!
您可以在会话中保留购物车的信息,以获取所需的信息,但您应该在会话和数据库中设置新信息! 然后在结账前你应该交叉检查你的信息。
另一个优点是,您可以跟踪商店中发生的事情! 如果没有人购买您的物品并且您将购物车存放在会话中,您将无法获得任何信息。