当前位置: 首页 > 面试题库 >

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

东郭俊楠
2023-03-14
问题内容

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


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

因此, 在短期 :是否确定存储对象的会话,是否有任何问题,它?

编辑:

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

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


问题答案:

我知道这个话题很老,但是这个问题不断出现,并没有让我满意:

无论是将对象保存在$
_SESSION中,还是根据隐藏在隐藏表单字段中的数据将它们整块地重构,还是每次都从DB重新查询它们,都在使用状态。HTTP是无状态的(或多或少;但是请参阅GET与PUT),但是几乎任何人关心与Web应用程序相关的所有事情都需要在某个地方维护状态。好像把国家推到了角落,这在某种程度上是理论上的胜利,这是错误的。状态就是状态。如果使用状态,则会失去无状态所带来的各种技术优势。除非您事先知道应该失去睡眠,否则这不是失去睡眠的东西。

汉克·盖伊(Hank
Gay)提出的“双重挫败”论点所带来的祝福使我特别困惑。OP是否正在构建分布式且负载均衡的电子商务系统?我的猜测不是。而且我将进一步假设,序列化他的$
User类或任何其他类不会使他的服务器无法修复。我的建议:使用对您的应用程序明智的技术。$
_SESSION中的对象很好,但要遵守常识性注意事项。如果您的应用程序突然变成了可与Amazon竞争的流量,那么您将需要重新适应。那就是生活。



 类似资料:
  • 问题内容: 被存储在客户端或服务器上的变量? 问题答案: 变量存储的位置由PHP的配置确定。通常这是在Linux / Unix系统上。如果无法100%确定,请使用此功能查看您的特定设置,方法是在您域的中创建具有以下内容的文件:

  • 本文向大家介绍php对象在内存中的存在形式分析,包括了php对象在内存中的存在形式分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了php对象在内存中的存在形式。分享给大家供大家参考。具体分析如下: (1)$p1对应内存地址,假设是0x123,($p1和地址存放在栈区,相当于我们查字典时的索引); (2)通过内存地址的索引,找到堆区。堆区里面存放着”小王“,”80“等数据 (3)$p2

  • 本文向大家介绍在foreach PHP Codeigniter内部调用存储过程,包括了在foreach PHP Codeigniter内部调用存储过程的使用技巧和注意事项,需要的朋友参考一下 需要更改“模型”和“控制器”内部的代码,以包括如下所示的代码: 在“控制器”内部 在“模型”内部

  • 问题内容: 我需要使用jQuery设置PHP $ _SESSION变量。如果用户单击图像,我想将与该图像相关的一条信息另存为php中的会话变量。 我想我可以通过调用php页面或函数并将该信息附加到查询字符串中来做到这一点。 有任何想法吗。我通过Google找不到什么帮助。 谢谢迈克 问题答案: 您不能仅通过jQuery来完成;您将需要结合使用Ajax(可以使用jQuery完成)和PHP后端。一个非

  • 本文向大家介绍对象,方法和变量在Java的内存中存储在哪里?,包括了对象,方法和变量在Java的内存中存储在哪里?的使用技巧和注意事项,需要的朋友参考一下 有五个主要内存区域,用于各种Java元素。以下是相同的列表。 类区域-该区域包含类的静态成员。 方法区域-此区域包含方法定义和可执行代码。 堆区域-该区域包含动态分配/取消分配的对象。如果某个对象不再被任何实时引用引用,则将其释放。 堆栈区域-

  • 主要内容:程序员的幽默计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示。 要想学习编程,就必须了解二进制,它是计算机处理数据的基础。 内存条是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。