Symfony 应用程序的运行时配置


Runtime configuration for Symfony application

我想为Symfony应用程序添加一个"维护模式" - 我在运行时设置的简单布尔配置。控制器(或可能是前端控制器(可以检查此值,也可以检查此值;正常处理请求,或返回 HTTP 503 和友好消息。

我可以想到 3 种可能的解决方案:

  • 参数.yml这是放置配置的逻辑位置,但它被Symfony应用程序缓存,使用维护模式可能需要cache:clear才能生效。我想避免这种情况!

  • 自定义配置文件它可以查找"maintenance.flag"的存在或读取自定义文件中的设置。这是为每次访问控制器添加额外的磁盘操作,感觉效率低下。

  • 环境变量它可以使用getenv()来查找维护模式环境变量的存在和值。这感觉是一种有效的方法,我想不出任何负面影响。

有没有人找到一种有效的方法来实现这种功能?我是在重新发明轮子吗?

有一个非常好的symfony包。看看这个

词典维护包

您只需将其安装在项目中,然后只需使用命令行即可将站点置于维护模式。

您可以设置许多配置,例如此状态的持续时间、自定义错误页面等。

正如您询问运行时时,我建议使用Web服务器conf看看这个.htaccess方法,它查看是否有维护.html在document_root,如果是,它会将所有请求重定向到它并提供正确的状态代码

    RewriteEngine On
    # Maintenance mode if /maintenance.html is present
    RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
    RewriteRule ^.*$ /maintenance.html [R=503,L]
    ErrorDocument 503 /maintenance.html

这意味着如果您想激活维护模式,只需将文件上传到您的 WebDIR