我目前正在按照我的标准开发流量高的网站。它是一个网上商店,在它的会话中有一些(序列化的)对象。
E.g。
$_SESSION['shoppingcart'] = new Shoppingcart();
此对象稍后在整个代码中使用。到目前为止没问题。 会话持续时间目前为1小时,当用户通过发出请求使其保持活动时会延长。
现在针对(可能是众所周知的)问题:在示例中对Shoppingcart
类进行更改时,更改可能会破坏对象的反序列化。我们可以做些什么来防止这个问题?推荐的方法是什么?
我们可以在数据库中保留值,并且只在会话中使用原始int来标识主键。
我们可以使用来自对象的一些数组转换。
答案 0 :(得分:1)
这里的专家很有可能有更好的答案,但现在我将分享我发现的内容。
鉴于所有这些潜在的问题,我强烈建议不要存储 会话中的对象。如果要保留登录用户, 而不是在$ _SESSION中存储User类的实例 存储用户标识并从数据库中填充用户对象或 缓存。这比让PHP神奇地处理更多的工作 一切都适合你,但你的应用程序会更加稳定 便携式无对象序列化。