为什么PHP中的MVC框架不能在请求之间保持不变?

时间:2012-04-03 18:17:46

标签: php model-view-controller frameworks persistence

通过阅读几个PHP框架的源代码和文档,我能够掌握的是它们通常不会持久存在,除了你个人缓存或扔进$ _SESSION var。为什么是这样?基本上为每个请求初始化框架似乎是浪费,至少序列化和存储一些核心对象和变量以节省处理和时间不是更好吗?

起初我认为这是相当主观的,并且避免询问,但我读过的所有内容都没有真正谈论它,所以必须有一些显而易见的东西我不知道。

我发现的唯一真正的提及/讨论是here,它没有直接回答我的问题,其中一些问题在我脑海中浮现。

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

2 个答案:

答案 0 :(得分:3)

<强>内存

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

数据“新鲜度”

将框架组件推入内存的第二个问题是它们可能会很快变得过时。而不是将对象从内存中拉出来,检查它是否已过时然后重新创建它(如果它确实过时了)效率低(大多数时候),而不是每次请求重新创建它。

我希望这能澄清事情。

答案 1 :(得分:0)

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

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