kefisu/maintenance-bundle

一个允许您将应用程序置于维护模式的Symfony Bundle。

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

dev-main 2024-09-15 20:16 UTC

This package is auto-updated.

Last update: 2024-09-15 20:18:58 UTC


README

Symfony 维护 Bundle 提供了一种简单的方式来管理 Symfony 应用程序维护模式。它允许您启用或禁用维护模式,并自定义应用程序处于维护模式时返回给用户的响应。

安装

要安装该捆绑包,请使用 Composer

composer require kefisu/maintenance-bundle

如果 Symfony 没有自动完成,请将捆绑包添加到您的 config/bundles.php 文件中

return [
    // ...
    Kefisu\Bundle\MaintenanceBundle\MaintenanceBundle::class => ['all' => true],
];

配置

该捆绑包提供了一个默认配置,您可以在 config/packages/maintenance.yaml 文件中进行自定义

maintenance:
  maintenance_file_path: '%kernel.cache_dir%/maintenance'
  • maintenance_file_path - 使用基于文件的存储时,存储维护模式状态的文件路径。默认情况下,它写入您的系统 tmp 目录

使用方法

启用维护模式

要启用维护模式,请运行以下命令

php bin/console maintenance:enable

每次激活维护模式都会生成一个密钥。此密钥可以用于绕过维护模式并访问应用程序。密钥显示在命令输出中。

自定义维护模式响应

您可以自定义以下维护模式响应选项

  • HTTP 状态码,通过使用 --status 选项可以自定义返回的 HTTP 状态码。
  • 持续时间,通过使用 --duration 选项可以将维护模式的持续时间设置为分钟。这将返回一个 Retry-After 标头,其中包含以秒为单位的持续时间。如果没有设置持续时间,则不会设置 Retry-After 标头。

禁用维护模式

要禁用维护模式,请运行以下命令

php bin/console maintenance:disable

检查维护模式状态

要检查是否启用了维护模式,请运行以下命令

php bin/console maintenance:status

工作原理

维护管理器

任何实现 Kefisu\Bundle\MaintenanceBundle\Contract\MaintenanceManagerInterface 的实现负责管理维护模式状态。该捆绑包为以下提供了默认实现

  • Kefisu\Bundle\MaintenanceBundle\Service\FileBasedMaintenanceManager - 读取和写入文件系统中的维护模式状态。状态存储在项目缓存目录中名为 maintenance 的文件中。(默认值)
  • Kefisu\Bundle\MaintenanceBundle\Service\CacheBasedMaintenanceManager - 读取和写入应用程序配置的缓存中的维护模式状态。状态存储在缓存中,键为 maintenance

维护监听器

Kefisu\Bundle\MaintenanceBundle\EventListener\MaintenanceListener 类监听内核请求并检查维护模式是否激活。如果是,则阻止请求并返回 503 响应。当维护模式被禁用时,请求传递给下一个监听器。如果您使用启用维护模式时生成的密钥,则监听器将允许请求通过。