我想在Symfony应用程序中添加一个“维护模式” - 我在运行时设置的简单布尔配置。控制器(或可能是前端控制器)可以检查该值和;正常处理请求,或返回HTTP 503和友好消息。
我可以想到3种可能的解决方案:
parameters.yml
这是放置配置的合理位置,但它会被Symfony应用程序缓存并使用维护模式可能需要cache:clear
才能生效。我想避免这个!
自定义配置文件 它可以查找“maintenance.flag”的存在或读取自定义文件中的设置。这为每次控制器访问添加了额外的磁盘操作,并且感觉效率低下。
环境变量
它可以使用getenv()
来查找维护模式环境变量的存在和值。这感觉就像一种有效的方法,我想不出任何负面影响。
是否有人找到了实现此类功能的有效方法?我是在重新发明轮子吗?
答案 0 :(得分:4)
有一个非常好的symfony捆绑。看看这个
您只需将其安装在项目中,然后只需使用命令行即可将您的站点置于维护模式。
您可以设置许多配置,例如此状态的持续时间,自定义错误页面等。
答案 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
即可