码迷,mamicode.com
首页 > 其他好文 > 详细

[Symfony 4.3] 创建一个站点维护模式

时间:2019-09-29 20:09:33      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:services   available   names   站点   返回   app   页面   框架   维护   

透过Symfony框架来创建一个站点维护模式很简单。只需在用户请求的时候检查站点是否处在维护模式中。当维护模式启动时,所有的请求都会被重新定向致某个页面去。

 

可以在EventListener的 onKernelRequest做到这一点:

 

 1 <?php
 2 
 3 namespace App\EventListener;
 4 
 5 
 6 class MaintenanceListener
 7 {
10     public function onKernelRequest(RequestEvent $event)
11     {
12       // 逻辑放这里
13     }
14 }

 

去 service.yaml 创建一个新的parameter,然后注册你的 MaintenanceListener:

parameters:
    maintenance: true


services:

        App\EventListener\MaintenanceListener:
        tags:
            - { name: kernel.event_listener, event: kernel.request }
        arguments:
            $maintenance: ‘%maintenance%‘ 

 

maintenance 是维护模式的开关,绑定maintenance的值去 $maintenance变数,并把它带入 MaintenanceListener的 constructor里面:

 

<?php

namespace App\EventListener;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Twig\Environment;

class MaintenanceListener
{
    private $maintenance;
    private $twig;

    public function __construct($maintenance, Environment $twig)
    {
        $this->maintenance = $maintenance;
        $this->twig = $twig;
    }

    public function onKernelRequest(RequestEvent $event)
    {
        
        if($this->maintenance != true)
        {
            return;
        }

        $event->setResponse(new Response($this->twig->render(‘maintenance.html.twig‘), Response::HTTP_SERVICE_UNAVAILABLE));
        $event->stopPropagation();
    }
}

 

当网站收到用户请求时,会进入 onKernelRequest里并检查 maintenance 是否为 true。若maintenance为true,返回一个页面给用户,然后终止其它的event。

 

[Symfony 4.3] 创建一个站点维护模式

标签:services   available   names   站点   返回   app   页面   框架   维护   

原文地址:https://www.cnblogs.com/novice-programmer/p/11609388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!