螺旋包/维护

在更新或进行维护期间,请禁用您的应用程序。

1.0.1 2022-09-16 11:35 UTC

This package is auto-updated.

Last update: 2024-09-16 15:58:42 UTC


README

PHP Latest Version on Packagist GitHub Tests Action Status Total Downloads

这里应该是您的描述。请限制为一两段,考虑添加一个小示例。

需求

确保您的服务器已配置以下PHP版本和扩展

  • PHP 8.1+
  • Spiral框架 3.0+

安装

您可以通过composer安装此包

composer require spiral-packages/maintenance

在包安装后,您需要从包中注册引导加载器。

protected const LOAD = [
    // ...
    \Spiral\Maintenance\Bootloader\MaintenanceBootloader::class,
];

注意:如果您正在使用 spiral-packages/discoverer,则无需自行注册引导加载器。

配置

默认情况下,该包使用file驱动程序来存储维护模式的有关信息。如果您有多个应用程序实例,则需要使用cache驱动程序,该驱动程序将可供所有实例访问。

MAINTENANCE_DRIVER=cache
MAINTENANCE_CACHE_STORAGE=null
MAINTENANCE_CACHE_KEY=maintenance

用法

Spiral\Maintenance\Middleware\PreventRequestInMaintenanceModeMiddleware包含在您的应用程序中,以防止在维护模式下访问的路线。

final class RoutesBootloader extends BaseRoutesBootloader
{
    protected function globalMiddleware(): array
    {
        return [
            \Spiral\Maintenance\Middleware\PreventRequestInMaintenanceModeMiddleware::class,
            // ...
        ];
    }
}

要启用维护模式,请执行down命令

php app.php down

默认情况下,维护模式的响应代码为503,但您可以设置自定义响应代码

php app.php down --status=504

要禁用维护模式,请使用up命令

php app.php up

当您的应用程序处于维护模式时,中间件会抛出带有定义的状态码的Spiral\Maintenance\Exception\MaintenanceModeHttpException异常。

Spiral框架允许您预渲染维护模式视图,该视图将在请求周期开始时返回。您可以使用App\ErrorHandler\ViewRenderer预渲染您选择的模板。默认情况下,它会在app/views/exception/{statusCode}.dark.php文件夹中查找模板。

您可以在app/views/exception/503.dark.php中创建一个新的视图文件

<extends:layout.base title="[[Maintenance mode]]"/>
<use:element path="embed/links" as="homepage:links"/>

<stack:push name="styles">
    <link rel="stylesheet" href="/styles/welcome.css"/>
</stack:push>

<define:body>
    <div class="wrapper">
        <img src="/images/503.svg" alt="Error 503" width="300px"/>
        <h2>{{ $exception->getMessage() ?? 'Maintenance mode' }}</h2>
    </div>
</define:body>

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请审查我们的安全策略,了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。