2

我正在为一个网站开发一个购物车,并且想知道在用户单击“添加到购物车”后我应该以什么方式存储产品 ID。

我应该将它们存储在会话中 - 例如

$_SESSION['cart'][$productid]++;

这会给负载下的服务器带来压力吗?或者这是最好的方法吗?

或者我应该创建一个临时数据库表,将信息存储在其中,并在处理完订单后删除?

4

2 回答 2

3

我肯定会将它们存储在数据库中,但不会每次都创建一个临时表。我建议您保留一个包含所有未完成订单以及用户标识符的表格。

这将比会话持续更长的时间,在用户注销后将保留所有会话,并在该用户再次登录后可用。当用户登录时,将其标识符保留在会话中。

编辑:虽然连接到数据库确实会消耗资源,但这就是数据库服务器的用途。与小桌子的连接几乎没有使用 - 我的意思是,您可能正在执行大量查询,只是显示您的购物车。如果您的网站由于在小表中保存奇数行而无法处理额外的压力,您将从销售中获得足够的钱来购买更大的服务器:)

于 2012-07-31T10:40:09.023 回答
1

您绝对应该使用数据库表来存储项目。登录的用户会感谢他们不必再次抓取所有物品,如果他们在一段时间后回来!

您可以将购物车的信息保存在会话中,以获取您需要的信息,但您应该在会话和数据库中设置新信息!然后在结帐之前,您应该交叉检查您的信息。

另一个优点是您可以跟踪商店中发生的事情!如果没有人购买您的商品并且您将购物车存储在会话中,您将不会获得任何信息。

于 2012-07-31T10:53:36.373 回答