在高流量站点上使用PHP会话对象的推荐方法是什么?

时间:2018-02-14 15:35:16

标签: php session

我目前正在按照我的标准开发流量高的网站。它是一个网上商店,在它的会话中有一些(序列化的)对象。

E.g。

$_SESSION['shoppingcart'] = new Shoppingcart();

此对象稍后在整个代码中使用。到目前为止没问题。 会话持续时间目前为1小时,当用户通过发出请求使其保持活动时会延长。

现在针对(可能是众所周知的)问题:在示例中对Shoppingcart类进行更改时,更改可能会破坏对象的反序列化。我们可以做些什么来防止这个问题?推荐的方法是什么?

  • 我们可以在数据库中保留值,并且只在会话中使用原始int来标识主键。

  • 我们可以使用来自对象的一些数组转换。

1 个答案:

答案 0 :(得分:1)

这里的专家很有可能有更好的答案,但现在我将分享我发现的内容。

  

鉴于所有这些潜在的问题,我强烈建议不要存储   会话中的对象。如果要保留登录用户,   而不是在$ _SESSION中存储User类的实例   存储用户标识并从数据库中填充用户对象或   缓存。这比让PHP神奇地处理更多的工作   一切都适合你,但你的应用程序会更加稳定   便携式无对象序列化。

来源https://www.phparch.com/2018/01/php-sessions-in-depth/