【问题标题】:Resource usage of session_start()session_start() 的资源使用情况
【发布时间】:2011-09-21 19:11:51
【问题描述】:

我使用 $_SESSION 对用户进行身份验证,但我也在考虑在会话中存储其他变量。但是,我不知道有多少会话可能会使用服务器上的资源。我的意思是在每个页面上都有 session_start() 是否有害,因为即使不需要会话也会启动?

每次访问都开始会话是好是坏还是中性?

【问题讨论】:

    标签: php performance session resources


    【解决方案1】:

    一般来说,在您看到您的网站开始抓取之前不要担心优化。

    在每个页面上使用 session_start() 一点也不有害,事实上它对于使用身份验证的网站来说是相当标准的。

    【讨论】:

      【解决方案2】:

      是的,session_start() 会消耗资源。然而,除非你的网站有大量的流量,否则你会注意到。并且存储会话数据的替代方法几乎都难以实现,并且往往具有有趣的故障模式。

      我建议的唯一一件事是小心您在会话中添加的内容 - 即使流量水平较低,大量数据也会产生显着影响。典型的错误是不小心将业务逻辑层的整个对象树加载到会话状态中。

      例如,假设您正在构建一个购物车;当客户点击“添加到购物篮”时,您想记住他们添加的商品。因此,您可以将商品的唯一 ID 添加到会话中,但是每次展示购物篮时都必须查找价格和描述,这很麻烦。因此,您决定将代表该项目的对象加载到您的会话中。该对象包含价格和描述,还包含商品的类别 - 以及该类别中的所有其他商品,因为您的应用程序没有使用延迟加载。所以现在,您购物篮中的每件商品还包含成百上千的其他物品;在您知道自己在哪里之前,您已经将几乎整个数据库加载到会话中。

      【讨论】:

      • 有没有办法衡量它消耗的资源量?我只想对我的网站进行估算。
      • stackoverflow.com/questions/1075419/… - 已编辑答案以显示一些反模式示例。
      • 我经常使用 memory_get_usage() 来估计我的脚本使用情况。但是关于 session_start(),我认为在大量并发使用时应该有所不同。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2015-10-21
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      相关资源
      最近更新 更多