【问题标题】:Shopping Cart - Store in sessions?购物车 - 在会话中存储?
【发布时间】:2012-07-29 02:36:21
【问题描述】:

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

我是否应该将它们存储在会话中——例如

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

这会对负载下的服务器造成压力吗?或者这是最好的方法?

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

【问题讨论】:

  • IMO,存储在会话中将是要走的路。存储在临时数据库中并不理想,因为它需要数据库交互
  • Fluffeh 下面说数据库。我不知道哪种方式最好。
  • 意见因人而异。最后,这是你觉得舒服的。
  • 感谢您的建议。我只是有点犹豫要走哪条路。

标签: php shopping-cart


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • Asprin 上面说要使用会话,但这似乎是一个很好的解决方案。每次连接数据库会不会占用更多的资源?
    • 哈哈,笑死我了。非常感谢。我想我会采用这个解决方案。 :)
    • @JamesReeves 太好了,就用户而言,这是更安全的选择。如果您打算这样做,请单击“接受答案”按钮关闭问题。
    • 我刚做了,得等2分钟才可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 2013-02-05
    • 2015-02-04
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多