在PHP中的页面之间传递类实例和其他数据

时间:2017-03-12 11:27:21

标签: php

我一直在研究PHP中页面之间是否存在持久数据的问题。这尤其适用于在一个页面中设置的对象,以后需要访问。看起来这比我想象的要困难,但有几种方法可以做到,虽然它们看起来有点尴尬,特别是当数据变得非常复杂时:

  • 通过$ _GET或$ _POST将数据传递到下一页
  • 将数据复制到数据库并在下一页中检索它
  • 将数据放入会话或cookie中
  • 序列化对象并使用相同的参数和值重新创建

这些都显得相当费力,因为它们主要依赖于解构现有数据结构,然后在下一页重新构建它。我假设这是为了减少PHP服务器的内存需求,方法是在关闭后立即从一个页面清除数据,然后从“清单”开始。

是否有更直接的方式在PHP中的页面之间传递更大的数据结构?

非常感谢, 千瓦

2 个答案:

答案 0 :(得分:4)

  

我认为这是为了通过在关闭时从一个页面清除数据来减少PHP服务器的内存需求

不,这不是因为内存效率问题。这是因为HTTP协议是无状态的。每个请求必须包含完成此操作所需的所有信息。

拟议方案的反例:

  1. 让我们假设Alice访问了A页,创建了一些对象,并希望它们在B页中可用。

  2. 您可以跟踪对B页的访问。

    2.1。但它不是爱丽丝,而是鲍勃。如何确定要显示的对象以及从何处获取它们?

    2.2。它再次 Alice,但请求从1000服务器场到达另一台机器。当然,您没有原始的PHP对象。你现在做什么?

答案 1 :(得分:2)

如果您使用$ _GET或$ _POST,则仅限于非敏感数据,并且您将对象公开给任何用户。你不希望这样。

Cookie的大小有限

  

cookie通常限制为4096字节,每个站点不能存储超过20个cookie。

在请求之间(对于同一用户)持久保存对象的最佳方法是使用Sessions。 memcached,redis,mysql等已有会话保存处理程序。如果您需要自定义内容,也可以编写自己的处理程序。