zend-modules/maintenance

ZF2的维护模式组件

dev-master 2015-12-06 11:41 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:03:57 UTC


README

安装

主要设置

使用composer(推荐)

  1. 在您的composer.json中添加此项目

    "require": {
        "zend-modules/maintenance": "dev-master"
    }
  2. 现在运行以下命令,让composer下载维护模式组件

    $ php composer.phar update

通过克隆项目

  1. 将此项目克隆到您的./vendor/目录。

警告 此安装类型将只允许组件以模块方式安装。

安装后

有两种方式设置此组件。

作为一个组件

  1. 在您的application.config.php文件中启用它。

    <?php
    return array(
        // ...
        'service_manager' => array(
            'factories' => array(
                'MaintenanceConfig' => 'Maintenance\Service\MaintenanceConfigFactory',
            ),
            'invokables' => array(
                'MaintenanceListener => 'Maintenance\Service\MaintenanceListener',
            ),
        ),
        'listeners' => array(
            'MaintenanceListener',
        ),
    );

作为一个模块

  1. 在您的application.config.php文件中启用它。

    <?php
    return array(
        'modules' => array(
            // ...
            'Maintenance',
        ),
        // ...
    );

配置

必须在您的application.config.php文件中进行配置。这是因为维护模块将在整个应用程序中生效。主要入口点是maintenance_mode

启用维护模式

  1. 在您的application.config.php文件中启用它。

    <?php
    return array(
        // ...
        'maintenance_mode' => array(
            'enabled' => true,
        ),
        // ...
    );

enabled的默认值是false。因此,要禁用,您可以取消注释该行或将它设置为false

启用维护模式访问

您可以在维护模式期间启用某些IP地址来访问您的网站。为此,您必须定义IP地址的白名单。

  1. 在您的application.config.php文件中设置白名单。

    <?php
    return array(
        // ...
        'maintenance_mode' => array(
            'enabled'   => true,
            'whitelist' => array(
                '127.0.0.1',
            ),
        ),
        // ...
    );

设置自定义模板

  1. 在您的application.config.php文件中设置模板路径。

    <?php
    return array(
        // ...
        'maintenance_mode' => array(
            'enabled'   => true,
            'template' => dirname(__DIR__) . '/views/layout/maintenance.phtml',
        ),
        // ...
    );

Retry-After报头

对于状态码设置为503的响应,可能会发送Retry-After HTTP报头。如果没有设置配置值、设置为过去的日期或状态码不是503,则不会设置此报头。

  1. 在您的application.config.php文件中设置retry-after报头的完整日期和时间。

    <?php
    return array(
        // ...
        'retry_after' => '2015-12-07 00:00:00',
        // ...
    );

HTTP状态码

默认情况下,服务器在维护模式下将返回503(服务不可用)HTTP状态码。如果您出于任何原因想要更改HTTP状态码,您可以这样做。

  1. 在您的application.config.php文件中设置所需的HTTP状态码。

    <?php
    return array(
        // ...
        'maintenance_mode' => array(
            'status_code' => 500,
        ),
        // ...
    );

运行时配置

有时我们可能希望从另一个来源(如数据库后端)设置维护模式选项。这可以轻松完成,因为维护模式配置存储在服务管理器中。只需在引导事件中更改您的设置。例如

```php
<?php
namespace Application;

use Zend\EventManager\EventInterface;

class Module
{
    public function onBootstrap(EventInterface $e)
    {
        if (!$e instanceof MvcEvent) {
           return;
        }

        $serviceManager    = $e->getApplication()->getServiceManager();
        $maintenanceConfig = $serviceManager->get('MaintenanceConfig');
        $maintenanceConfig->setEnabled(true);
    }
}
```