我处于十字路口,不确定什么是更好用。现在我正在使用会话数组来动态存储计算,但我需要切换到对象,因为我想要一些函数。但我也在考虑使用ajax并在数据库中来回插入数据,但我担心这可能是在繁重的交通下进行的许多计算。
我想要做的是有一个购物车被添加到商品中,如果更改了数量字段,则需要重新计算购物车中的所有商品,所以我想知道哪个是更好的解决方案,使用对象和会话或更新数据库中的大表,多个用户操纵数据。
我正在使用mysql db,如果这有助于决定..
答案 0 :(得分:1)
会话应该快得多,但如果用户关闭浏览器,它将不会持续存在。我大部分时间都在会话中使用会话(购物车,最后访问的搜索等)。在具有中等大量用户的站点上,您需要对表进行维护以清除旧的会话信息。这对我来说太麻烦了,除非我真的需要几天之后的数据。
答案 1 :(得分:1)
请记住,会话本身可以存储在数据库中。因此,无论您选择什么,都不应该尝试滚动自己的基于数据库的会话。
请记住,标准PHP会话会将会话数据存储在光盘上。如果您的网站上有很多用户进行了多次会话,那么您可能会因太多光盘i / o而陷入困境。但是,如果你有一个SSD驱动器,这将不是一个问题。
我以前使用的另一个选项是在与服务器相同的盒子上放置一个MySQL数据库,并将数据存储在仅内存表中。我认为这是两个世界中最好的:
它比传统的myisam更快 或innodb数据库,因为它没有 永远被抛弃到磁盘(这主要是 仅影响会话写入)
假设您的数据库在 与您的Web服务器不同的框, 它的速度更快,因为你的会话数据库 是在同一个盒子里。
您可以执行一些sql wizardry 如果你需要你的会话商店(不能 使用文件执行此操作)
答案 2 :(得分:0)
我创建了一个购物车表,其中存储了一个SESSION ID和相应的商品ID。
会话ID将用于关联浏览用户。计算价格就像使用用户会话ID检索所有行并从项目表中汇总价格一样简单(例如)。对购物车的任何更改都涉及对每个项目进行简单的插入或删除。
答案 3 :(得分:0)
对于做很多不同的计算,我会选择会话......这实际上是带宽最友好的方式。如果你想在不使用cookie的情况下坚持购物车,那么你可以在他们离开时将他们的购物车存放在数据库中,并在他们回来时重新加载(显然根据用户ID存放购物车)。