首页 > 解决方案 > Symfony 4 应用程序是无状态的吗?

问题描述

为了将一个应用程序部署到多台机器上,我有必要开发一个无状态应用程序。

所以我的问题是:Symfony 是无状态的吗?或者使用 Symfony 服务器变量,以便在多个服务器上我会遇到问题?

我已将 security.yml 中的无状态选项设置为 true:

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: true
        stateless: true

为了创建一个完整的无状态应用程序,我在 Symfony 中还有什么需要考虑的吗?

标签: symfonydeploymentsymfony4stateless

解决方案


概括起来总是有点危险,但我怀疑大多数 Symfony 应用程序都有会话形式的服务器状态。特别是,如果应用程序要求用户登录,则可能正在使用会话。

但是,服务器状态并不意味着您会遇到多台服务器的问题。会话变量可以存储在数据库或 redis 缓存中,因此可以共享。

我从未真正尝试过使用 stateless true 选项。如果您尝试使用会话,不确定会发生什么。但值得一试。只要您实际上不使用会话,那么您的应用程序就应该是无状态的。

而且,如果您确实需要某种状态(可能是为了跟踪用户登录),那么还有会话的无状态替代方案,例如Json Web Tokens(JWT)


推荐阅读