【问题标题】:Is PHP or PHP based web framework stateful or stateless? [closed]基于 PHP 或 PHP 的 Web 框架是有状态的还是无状态的? [关闭]
【发布时间】:2011-06-13 06:23:34
【问题描述】:

与以 Java 为中心的应用程序一样,Play 框架是无状态的,lift 框架是有状态的,就像任何 servlet 或 Java EE 容器(如 Tomcat 或 GlassFish)是有状态的,PHP Web 框架(如 zend 或 cake php 是无状态或有状态的)和为什么?

【问题讨论】:

  • PHP 不是框架
  • PHP 不是一个框架,它是无共享的,除非你告诉它通过信号量、会话或其他机制共享。

标签: php playframework lift


【解决方案1】:

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

要在此基础上实现状态,您可以使用会话、数据库、共享内存、文件或任何其他以某种方式保留状态的东西。 Zend 或 Cake 等框架为这些机制提供了抽象,使其在不同程度上看起来是开箱即用的状态。 PHP 从来没有真正保持状态。

【讨论】:

    【解决方案2】:

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

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

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

    关于为什么无状态 - 有状态会话会增加显着的内存和性能开销,请参阅:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 1970-01-01
        相关资源
        最近更新 更多