【问题标题】:PHP Session vs ClassPHP 会话与类
【发布时间】:2012-02-29 06:12:28
【问题描述】:

我有一个登录页面。用户可以登录他们的帐户并获取他们的详细信息。但我很困惑,我应该将用户详细信息存储在会话变量中,还是应该只将 ID 作为会话变量传递,然后在下一页中使用 ID 由类检索的所有详细信息。

如果我只将 ID 作为会话变量传递,那么我必须在每个页面中调用该类。请给我正确的想法,我不想重复调用这个类,页面应该加载得更快。

提前致谢。

【问题讨论】:

  • 您始终可以将对象存储为会话。该对象包含其所有属性。

标签: php class session


【解决方案1】:

在很长很长一段时间内,性能方面都无关紧要。您可以选择任何一种方法。

根据我的经验,将 ID 存储在会话中,并在需要时在用户类中检索用户数据是更常见的方法。

在会话中以序列化形式存储包含用户数据的对象也是可能的,但是

  • 可能会消耗大量内存(因为会话数据在每次请求时都会加载到 PHP 脚本中)

  • 您不能依赖最新的数据(如果用户改变了他们的偏好,或者发生了其他事情怎么办?)

【讨论】:

  • 感谢您的宝贵时间。问题是假设用户有 5 个页面要访问,并且在每个页面中,我通过调用一个类从 DB 获取信息,并假设一次我有 500 个用户在线。想想 MySql 的负载。我只希望我的网站运行得更快更流畅。所以有什么想法..?
【解决方案2】:

我认为您应该只将会话 ID 存储在会话变量中。如果您在会话中存储有关用户的一些信息,您将不会获得任何性能优势,因为您将永远不会以后需要什么样的附加信息,并且序列化 - 反序列化也需要一些时间(特别是当您将会话存储在数据库中时!)。

例如,我总是在每个请求中从数据库加载用户数据,因为我必须检查用户有几个原因:他/她是否被锁定,他/她是否被禁用,他/她的首选语言是什么,何时他/她上次来过吗?等等。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多