Symfony应用程序的运行时配置

时间:2016-02-02 16:35:27

标签: php symfony

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

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

  • parameters.yml 这是放置配置的合理位置,但它会被Symfony应用程序缓存并使用维护模式可能需要cache:clear才能生效。我想避免这个!

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

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

是否有人找到了实现此类功能的有效方法?我是在重新发明轮子吗?

2 个答案:

答案 0 :(得分:4)

有一个非常好的symfony捆绑。看看这个

LexikMaintenanceBundle

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

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

答案 1 :(得分:2)

当你问起运行时,我建议使用webserver conf 看看这个.htaccess方法,看看document_root上是否有一个maintenance.html,如果有的话,它会将所有请求重定向到它并提供正确的状态代码

    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

即可