oops / morozko
Requires
- php: >= 7.1.0
- nette/di: ^2.4.10
- nette/finder: ^2.4
- ocramius/package-versions: ^1.1
- psr/log: ^1.0
- symfony/console: ^3.3||^4.0
Requires (Dev)
- kdyby/console: ^2.7.0
- mockery/mockery: ^1.0.0
- nette/bootstrap: ^2.4.0
- nette/tester: ^2.0.0
This package is auto-updated.
Last update: 2022-02-01 13:11:37 UTC
README
⚠️ 此包不再维护。 您可以使用 contributte/console-extra 中的 AdvancedCache 模块。
我的小应用程序,你暖了吗?
Morozko 是用于 Nette 框架应用程序缓存预热的一个实用工具。
安装和需求
$ composer require oops/morozko
Oops/Morozko 需要 PHP >= 7.1。
Oops/Morozko 提供了一个 Symfony/Console 命令,因此,您还必须安装和配置一个 Symfony/Console 集成包,例如 Kdyby/Console 或 contributte/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-latte-bridge
预编译配置目录中找到的所有 Latte 模板。oops/morozko-doctrine-bridge
预热 Doctrine 元数据缓存并生成实体代理。
自定义缓存预热器
您也可以创建自己的缓存预热器。只需创建一个实现 Oops\Morozko\CacheWarmer
接口的类,并将其作为服务注册到 DI 容器中。
第三方缓存预热器
如果您有一个想与他人分享的缓存预热工具,请通过拉取请求将其添加到本节。