kefisu / maintenance-bundle
一个允许您将应用程序置于维护模式的Symfony Bundle。
dev-main
2024-09-15 20:16 UTC
Requires
- php: >=8.0
- symfony/console: 6.* || 7.*
- symfony/framework-bundle: 6.* || 7.*
Requires (Dev)
- psr/cache: ^3.0
- squizlabs/php_codesniffer: ^3.10
- vimeo/psalm: ^5.26
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 响应。当维护模式被禁用时,请求传递给下一个监听器。如果您使用启用维护模式时生成的密钥,则监听器将允许请求通过。