oops/morozko

此包已被废弃,不再维护。作者建议使用 contributte/console-extra 包。

Nette 框架的缓存预热库。

1.0.0-beta.1 2018-04-02 15:43 UTC

This package is auto-updated.

Last update: 2022-02-01 13:11:37 UTC


README

⚠️ 此包不再维护。 您可以使用 contributte/console-extra 中的 AdvancedCache 模块。

Build Status Downloads this Month Latest stable

Morozko, the impersonation of frost from a 1964 Soviet movie

我的小应用程序,你暖了吗?

Morozko 是用于 Nette 框架应用程序缓存预热的一个实用工具。

安装和需求

$ composer require oops/morozko

Oops/Morozko 需要 PHP >= 7.1。

Oops/Morozko 提供了一个 Symfony/Console 命令,因此,您还必须安装和配置一个 Symfony/Console 集成包,例如 Kdyby/Consolecontributte/console

使用

在您的配置文件中注册扩展。别忘了也注册一个 Symfony/Console 集成。

extensions:
    morozko: Oops\Morozko\DI\MorozkoExtension
    console: Kdyby\Console\DI\ConsoleExtension

然后您可以直接运行 oops:morozko:warmup 命令,或者将其添加到您的部署流程中。

默认缓存预热器

默认情况下,oops:morozko:warmup 命令执行一个默认缓存预热器:NetteConfiguratorCacheWarmer,它编译 DI 容器。

要执行此操作,它需要知道您的 DI 容器是如何配置的 - 您需要提供一个实现 ConfiguratorFactoryInterface 的实现,其 create() 方法应返回与您的应用程序的 bootstrap.php 中相同的 Configurator。实际上,使用 bootstrap.php 中的实现可能更明智,以避免代码重复。

<?php
namespace My\Application;

use Nette\Configurator;
use Oops\Morozko\CacheWarmers\NetteConfiguratorCacheWarmer\ConfiguratorFactoryInterface;

final class ConfiguratorFactory implements ConfiguratorFactoryInterface
{
    public function create(): Configurator
    {
        $configurator = new Configurator();
        // ... configure application ...
        return $configurator;
    }
}
morozko:
    configuratorFactory: My\Application\ConfiguratorFactory

请注意,在 CLI 中,%wwwDir%%appDir% 参数可能实际上并不指向文档根。 例如,如果您通过 bin/console.php 运行控制台命令,它可能指向 bin 目录。如果是这种情况,您需要在其配置工厂中将这些参数设置到正确的值,否则生成的 DI 容器将不会与生产中实际使用的容器匹配。

<?php
$configurator = new Nette\Configurator();
$configurator->addParameters([
    'appDir' => __DIR__,
    'wwwDir' => __DIR__ . '/../www',    
]);

// ...

附加缓存预热器

目前,这些是 Morozko 的 DI 容器缓存预热器的官方补充

自定义缓存预热器

您也可以创建自己的缓存预热器。只需创建一个实现 Oops\Morozko\CacheWarmer 接口的类,并将其作为服务注册到 DI 容器中。

第三方缓存预热器

如果您有一个想与他人分享的缓存预热工具,请通过拉取请求将其添加到本节。