是否在每个请求上创建和销毁应用程序对象?

时间:2010-08-19 22:14:17

标签: php

在PHP中有许多框架,它们都具有前端控制器或条目脚本或应用程序的概念。基本上所有这些都意味着在浏览器的Http请求中,创建了一个应用程序实例(类似于Zend框架,Zend_Application的实例和Yii中的Yii :: createWebApplication),每个应用程序实例进一步初始化不同的组件(嵌套属性对象),如控制器对象,数据库对象,视图对象(主要是控制器对象的子属性对象),请求和响应对象等。

我希望现在很清楚。它在每个MVC框架中都必须相同:)无论使用什么语言

我很想知道的是,每当用户点击浏览器按钮或链接并创建HTTP请求或AJAX请求时,是否创建了此应用程序实例(以及其嵌套的子对象)?

我认为Java应用程序实例在整个请求中都是持久的,也许我错了:)

它是否在PHP中持久化,如果不是,有什么限制?

感谢您的关注

2 个答案:

答案 0 :(得分:0)

在库存PHP中,每个请求都会重建和/或重新加载所有内容。可能存在PHP的修改版本(或与状态服务器服务或其他东西对话的第三方扩展),可以将应用程序范围内的状态保留在内存中,但您必须查找它们。

除了将所有内容恢复到可运行状态的开销之外,其主要缺点是,如果网站没有处理请求,该网站通常无法执行任何操作。有一些解决方法,比如cron作业/计划任务,但如果应用程序在整个时间“运行”,则不需要它们。

答案 1 :(得分:0)

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