为什么PHP中的MVC框架在请求之间不持久


Why do MVC frameworks in PHP not persist between requests?

我从几个PHP框架的源代码和文档中了解到,它们通常不会持久存在,除非你个人缓存或放入$_SESSION变量中。为什么会这样?本质上为每个请求初始化框架似乎是一种浪费,至少序列化和存储一些核心对象和变量以节省处理和时间不是更好吗?

一开始我觉得这很主观,避免提问,但我读到的所有内容都没有真正谈到这一点,所以我肯定错过了一些明显的东西

我发现的唯一真正提到/讨论是在这里,它并不能直接回答我的问题,其中一些问题有点让我难以理解。

编辑澄清:我不是在问PHP的内部工作原理,我知道持久性是如何工作的(即,除非你通过缓存或会话变量,否则不会持久化),我是在问为什么PHP框架不为它们的核心对象这样做。同样,在我看来,这似乎是主观的,但由于我读过的几乎没有提到它,而且这似乎是一种相当标准的做法,我想知道我缺少了什么。

内存:

由于内存问题,大多数框架不将这些核心机制存储在$_SESSION中。框架通常生成可以包含几兆字节信息的变量/对象。这听起来可能不多,但如果将其扩展到几千个用户,你就会遇到问题。

数据"新鲜度"

将框架组件推入内存的第二个问题是,它们很快就会过时。与其从内存中取出一个对象,不如检查它是否过时,然后重新创建它(如果它确实过时了)(大多数时候)比每次请求都重新创建它效率低。

我希望这能澄清问题。

如果您希望数据在服务器请求之间保持不变,则需要使用cookie/会话或将数据存储在数据库中。这就是它的工作方式。PHP本身无法存储数据,以便在服务器请求之间使用。

有些框架可能将核心对象存储在数据库中或磁盘上的本地文件中,但这取决于框架。