【问题标题】:Is it better to use php sessions with objects or access db?将 php 会话与对象一起使用或访问数据库更好吗?
【发布时间】:2010-11-11 17:03:03
【问题描述】:

我正处于十字路口,不确定哪种更好用。现在我正在使用会话数组来动态存储计算,但我需要切换到对象,因为我想要一些功能。但我也在考虑使用 ajax 并将数据来回插入到数据库中,但我担心它可能会在大量流量下进行许多计算。

我想要做的是有一个购物车,其中添加了物品,如果对数量字段进行更改,则需要重新计算购物车中的所有物品,所以我想知道哪个是更好的解决方案, 使用对象和会话或更新数据库中的大表,多个用户操作数据。

如果这有助于决定,我正在使用 mysql db..

【问题讨论】:

    标签: php mysql database object


    【解决方案1】:

    请记住,会话本身可以存储在数据库中。因此,无论您选择什么,都不应尝试推出自己的基于数据库的会话。

    请记住,标准 PHP 会话将会话数据存储在磁盘上。如果您的站点上有很多用户,并且有很多会话结束,那么您可能会因为过多的磁盘 i/o 而陷入困境。但是,如果您有 SSD 驱动器,这将不是什么大问题。

    我之前使用的另一个选项是简单地将 MySQL 数据库与服务器放在同一个盒子上,并将数据存储在仅内存的表中。我认为这是两全其美:

    • 它比传统的 myisam 更快 或 innodb 数据库,因为它没有 曾经被转储到磁盘(这主要是 只影响会话写入)

    • 假设您的数据库位于 与您的网络服务器不同的盒子, 它更快,因为您的会话数据库 在同一个盒子上。

    • 您可以在 如果需要,您的会话存储(不能 对文件执行此操作)

    【讨论】:

      【解决方案2】:

      为了进行许多不同的计算,我会选择会话...这确实是对带宽最友好的方式。如果您想在不使用 cookie 的情况下保留他们的购物车,那么您可以在他们离开时将他们的购物车存储在数据库中,并在他们回来时重新加载(显然基于 userID 存储购物车)。

      【讨论】:

        【解决方案3】:

        会话应该快得多,但如果用户关闭浏览器,它就不会持续存在。我大部分时间都使用会话来处理这类事情(购物车、上次访问的搜索等)。在具有中等大量用户的站点上,您需要对表进行维护以清除旧的会话信息。除非我真的需要几天后的数据,否则这对我来说太头疼了。

        【讨论】:

        • 我担心拥有大量不同的会话会导致带宽问题,这不是真的吗?
        • 不会下载/上传会话的内容,只有会话 ID。会话的内容保留在服务器上,只能由服务器端代码访问。与数据库连接/访问相比,会话的影响要小得多。
        • 你用什么来保存会话中的数据,比如购物车?你认为一个类会是最好的解决方案还是我可以使用一个像数据库这样的表?
        • 您必须使用常规的 php 变量:对象、字符串、数组等。我使用适合我想要存储的任何内容。对于购物车,我有一个 Shopping Cart 类,它具有查找总计和添加/删除项目等的方法。其他数据的数组。其他数据的简单字符串或整数。唯一“像一张桌子”的东西就是一个关联数组。
        【解决方案4】:

        我创建了一个购物车表,其中存储了 SESSION ID 和相应的商品 ID。

        会话 ID 将用于关联浏览用户。计算价格就像检索带有用户会话 ID 的所有行并从项目表中对价格求和一样简单(例如)。对购物车的任何更改都需要对每个项目进行简单的插入或删除。

        【讨论】:

        • 会话表是什么意思?你能给我一个小例子吗?我正在使用数组 atm。
        猜你喜欢
        • 1970-01-01
        • 2022-11-02
        • 2013-01-25
        • 2011-07-27
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多