小编典典

PHP:在 $_SESSION 中存储“对象”

all

我刚刚发现我实际上可以 在 $_SESSION 中存储对象,
我觉得这很酷,因为当我跳转到另一个页面时,我仍然有我的对象。现在在我开始使用这种方法之前,我想知道它是否真的是一个好主意,或者是否存在 潜在的陷阱

我知道如果我有一个单一的入口点,我就不需要这样做,但我还没有,所以我没有单一的入口点,我真的很想保留我的对象,因为我没有’不要那样失去我的状态。(现在我还读到我应该对无状态站点进行编程,但我还不明白这个概念。)

简而言之 :在会话中存储对象可以吗,有什么问题吗?


编辑:

临时总结 :到目前为止,我知道 重新创建 对象可能会更好,即使它涉及再次查询数据库。

进一步的答案可能会更 详细地说明这方面


阅读 98

收藏
2022-07-16

共1个答案

小编典典

我知道这个话题已经过时了,但是这个问题不断出现,并且没有让我满意:

无论您将对象保存在 $_SESSION 中,还是根据隐藏在表单字段中的数据重建它们,或者每次从数据库中重新查询它们,您都在使用状态。HTTP
是无状态的(或多或少;但请参阅 GET 与 PUT),但几乎任何人关心的 Web
应用程序都需要在某处维护状态。表现得好像将国家推入角落和缝隙相当于某种理论上的胜利是错误的。国家就是国家。如果您使用状态,您将失去无状态所获得的各种技术优势。除非你事先知道你应该为此失眠,否则这不是失眠的事情。

我对汉克·盖伊提出的“双重打击”论点所获得的祝福感到特别困惑。OP 是否在构建分布式负载均衡的电子商务系统?我的猜测是否定的;我将进一步假设序列化他的
$User 类或其他任何东西不会使他的服务器无法修复。我的建议:使用对您的应用程序敏感的技术。$_SESSION
中的对象很好,但须遵守常识性预防措施。如果您的应用程序突然变成在流量服务方面与亚马逊相媲美的东西,您将需要重新调整。这就是生活。

2022-07-16