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