2011-06-13 85 views
4

沿着与以Java为中心的应用程序相同的路线,Play框架是无状态的,Lift框架是有状态的,就像任何servlet或Java EE容器(如Tomcat或GlassFish)都是statefull一样,PHP web框架也是zend或cake php无状态或有状态的, ?基于PHP或PHP的Web框架是有状态的还是无状态的?

+8

PHP不是一个框架 – 2011-06-13 06:24:37

+1

PHP不是一个框架,并为共享什么,除非你告诉它通过共享信号量,会话或其他机制。 – Gordon 2011-06-13 06:26:06

+0

编辑清楚 – ace 2011-06-13 06:31:42

回答

10

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

要实现状态,最重要的是你可以使用会话,数据库,共享内存,文件或任何其他方式保持状态。像Zend或Cake这样的框架为这些机制提供了抽象,使得它在不同程度上具有开箱即用的状态。尽管PHP从来没有真正保持状态。

3

Web应用程序中唯一的'状态'是持久存储在某处(如数据库),Web请求响应流程是无状态的。它从持久存储器中取出或放入持久存储器,以使其表现得像是有状态的。恕我直言,会话和cookie都包含在这个持久性存储中。

3

这不是全部关于Java或PHP。 HTTP是一种无状态协议。

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

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

至于为何无状态 - 有状态会话添加显著内存和性能开销看到:

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