2010-08-19 45 views
1

在PHP中有许多框架,并且它们都具有前端控制器或入口脚本或应用程序的概念。基本上所有这些都意味着在浏览器的Http请求中创建了一个应用实例(就像在Zend框架中,Zend_Application的实例和Yii中的Yii :: createWebApplication一样),并且每个应用实例进一步初始化不同的组件(嵌套属性对象)控制器对象,数据库对象,查看对象(主要是控制器对象的子对象属性),请求和响应对象等。是否在每个请求上创建并销毁应用程序对象?

我希望至今清楚。它必须是相同的每个MVC框架:)无论什么语言

我很想知道这是什么是这个应用程序实例创建(与其嵌套子对象一起)每次用户点击一个浏览器按钮或链接并发出HTTP请求或AJAX请求?

我觉得在Java应用程序实例是整个请求执着,也许我错了:)

是在PHP持久的,有什么限制如果不是?

感谢您的关注

回答

0

在股票PHP,一切的重建和/或重新加载在每次请求。可能会有修改后的PHP版本(或者与状态服务器服务对话的第三方扩展或其他内容)可以保持应用程序内存状态,但是您必须查找它们。

这样做的主要缺点是,除了将所有内容恢复到可运行状态的开销之外,如果网站没有处理请求,它通常无法做任何事情。有一些解决方法,比如cron作业/计划任务,但如果应用程序一直“运行”,则不需要这些工作。

+0

这对于处理PHP的服务器来说肯定是很难的:) – 2010-08-19 22:23:35

+0

PHP并没有你想象的那么慢。 :)如果没有过多的东西要加载,特别是如果你使用类似mod_php的东西来保持PHP解释器加载并准备运行,那么除了最繁忙的站点外,它的体积都很快。 – cHao 2010-08-20 01:08:19

0

不幸的是,在PHP中远程进行某种有状态处理的唯一方法是使用会话(和间接cookie)。即使您使用会话来保存您的状态,也必须在下一次请求时重建。

+0

通过序列化,框架可以(并且在少数情况下* * *)轻松支持在每个请求上加载和保存的应用程序范围的状态,很像会话状态。但是关键问题以及被问到的问题的答案是最后一部分:“每次请求都会加载并保存......”。 – cHao 2010-08-20 01:04:27

相关问题