基于PHP或PHP的Web框架是有状态还是无状态?

时间:2011-06-13 06:23:35

标签: php playframework lift

与Java中心应用程序一样,Play框架是无状态的,并且提升框架是有状态的,就像任何像Tomcat或GlassFish这样的servlet或Java EE容器是有状态的,是像zend或cake php无状态或有状态的PHP Web框架。为什么呢?

3 个答案:

答案 0 :(得分:12)

PHP本身没有状态。每个请求都是完全独特的。在这方面,它非常接近HTTP的裸机。

要实现状态,您可以使用会话,数据库,共享内存,文件或以某种方式保留状态的任何其他内容。像Zend或Cake这样的框架为这些机制提供了抽象,使得它在不同程度上看起来很有条理。 PHP永远不会真正保持状态。

答案 1 :(得分:4)

不仅仅是Java或PHP。 HTTP是无状态协议。

为使其成为有状态,开发人员(程序员)必须确保存储所有相关信息,并确保在调用脚本时回读所有相关信息。

大多数服务器都为统计管理提供会话管理。

至于为什么无状态 - 有状态会话增加了大量内存和性能开销,请参阅:

models-with-persistent-state-between-http-requests

答案 2 :(得分:3)

Web应用程序中唯一的'状态'是持久存储的内容(如数据库),Web请求 - 响应流是无状态的。它取自或放入持久存储,因此它的行为就像它是有状态的一样。恕我直言,会话和cookie都包含在这个持久存储中。