kagir/yii2-maintenance-mode

Yii框架2.x.x版本的维护模式组件。

安装: 0

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分叉: 31

类型:yii2-extension

1.2.1 2021-06-11 08:14 UTC

This package is not auto-updated.

Last update: 2024-09-28 00:46:05 UTC


README

Latest Stable Version Total Downloads License

安装

运行以下命令之一:

php composer.phar require --prefer-dist kagir/yii2-maintenance-mode "*"

或者

"kagir/yii2-maintenance-mode": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

添加到您的配置文件

'bootstrap' => [
    'kagir\maintenance\Maintenance'
],
...
'container' => [
    'singletons' => [
        'kagir\maintenance\Maintenance' => [
            'class' => 'kagir\maintenance\Maintenance',

            // Route to action
            'route' => 'maintenance/index',

            // Filters. Read Filters for more info.
            'filters' => [
                [
                    'class' => 'kagir\maintenance\filters\RouteFilter',
                    'routes' => [
                        'debug/default/toolbar',
                        'debug/default/view',
                        'site/login',
                    ]
                ]
            ],

            // HTTP Status Code
            'statusCode' => 503,

            //Retry-After header
            'retryAfter' => 120 // or Wed, 21 Oct 2015 07:28:00 GMT for example
        ],
        'kagir\maintenance\StateInterface' => [
            'class' => 'kagir\maintenance\states\FileState',

            // optional: use different filename for controlling maintenance state:
            // 'fileName' => 'myfile.ext',

            // optional: use different directory for controlling maintenance state:
            // 'directory' => '@mypath',
        ]
    ]
]

过滤器

您可以使用过滤器来允许例外。

'container' => [
    'singletons' => [
        'kagir\maintenance\Maintenance' => [
            'class' => 'kagir\maintenance\Maintenance',
            // Route to action
            'route' => 'maintenance/index',
            // Filters. Read Filters for more info.
            'filters' => [
                //Allowed routes filter. Your can allow debug panel routes.
                [
                    'class' => 'kagir\maintenance\filters\RouteFilter',
                    'routes' => [
                        'debug/default/toolbar',
                        'debug/default/view',
                        'site/login',
                    ]
                ],
                // Allowed roles filter
                [
                    'class' => 'kagir\maintenance\filters\RoleFilter',
                    'roles' => [
                        'administrator',
                    ]
                ],
                // Allowed IP addresses filter
                [
                    'class' => 'kagir\maintenance\filters\IpFilter',
                    'ips' => [
                        '127.0.0.1',
                    ]
                ],
                //Allowed user names
                [
                    'class' => 'kagir\maintenance\filters\UserFilter',
                    'checkedAttribute' => 'username',
                    'users' => [
                        'Kagir',
                    ],
                ]
            ],
        ]
    ]
]

您可以创建自定义过滤器

class MyCustomFilter extends Filter
{
    public $time;

    /**
     * @return bool
     */
    public function isAllowed()
    {
        return (bool) $this->time > 3600;
    }
}

通过控制台或仪表板设置维护模式

添加到您的控制台或公共配置文件

'container' => [
    'singletons' => [
        'kagir\maintenance\StateInterface' => [
            'class' => 'kagir\maintenance\states\FileState',
            // optional: use different filename for controlling maintenance state:
            // 'fileName' => 'myfile.ext',

            // optional: use different directory for controlling maintenance state:
            // 'directory' => '@mypath',
        ]
    ]
],
'controllerMap' => [
      'maintenance' => [
          'class' => 'kagir\maintenance\commands\MaintenanceController',
      ],
],

现在您可以通过命令设置模式

php yii maintenance/enable
php yii maintenance/disable