将对象保存在会话中是一种好的实践吗?

3
我正在开发一个通用的PHP应用程序,可以动态定制给多个客户使用。
我有一个名为client的类,我在其中加载客户的样式和偏好设置。
我的问题是:
将该对象保存在会话中是否是一种好的实践?(我认为这是最好的解决方案,而不是在每个页面上创建对象,这将需要大量的mysql查询。)
3个回答

5

在处理session时,有几个需要考虑的事情。

  1. 不应该在session中存储非常大的值。但我认为在您的情况下这不是问题,因为偏好通常足够小。

  2. 当您在session中存储对象时,可能无法获得实时更新。例如,同一用户使用两个独立的浏览器和/或设备登录并修改偏好设置。在这种情况下,另一个浏览器将没有更新的定制内容。这不是一个大问题,但取决于您的要求。

我没有看到任何其他问题。实际上,在session中存储小值并避免数据库查询是有效且良好的解决方案。


客户信息从不改变,每个客户的数据也不多。谢谢! - Tony

1

如果这是一些不会改变的东西,并且只会导致不断调用MySQL查询,那么是的,这是一个好主意。

MySQL查询(以及一般的函数)是内存/ CPU密集型的,可能会影响PHP的页面加载速度,因此您引起的工作越少,效果就越好。

如果返回的值将不断更改,则最好不要这样做,而是在会话中存储尽可能多的值。


客户信息从不改变,每个客户的数据也不多。我想不出其他的选择。谢谢! - Tony

0

我认为当客户端关闭浏览器时,会话将会失效。 如果你把它存储在cookie中(加载客户端)?这对安全性不利。

当你在会话中存储小数据(加载服务器)时,这意味着你正在使用一些服务器内存。 当你有很多客户端时会发生什么?

因此,数据库连接应该在每个页面的处理结束时被销毁。 放心使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接