霜冻22 / nette-deploy-center
生产环境部署管理中心,浏览日志、异常等。
v1.1
2013-11-18 14:02 UTC
Requires
- php: >= 5.3.0
- nette/nette: 2.*
This package is not auto-updated.
Last update: 2024-09-23 14:29:45 UTC
README
版本 1.1
注意:维护支持目前仅适用于 @dev 版本,而不是 @stable 版本,因此如果您使用 stable 版本,则只会实现到调用 register() 方法为止。以下所有行都已不再相关。
在 bootstrap.php 中实现,最好是在从 Composer 加载自动加载器之后立即进行,以防止 RobotLoader 的崩溃导致 DeployCentra 不可用。
同时,系统可选地支持所谓的维护,即如果您发布更改并希望用户在页面未完全发布时不允许干预,那么在注册 DeployCenter 后,您可以调用 checkMaintenance 方法,如果维护活动是激活的,则显示 "维护" 模板,当然您也可以通过调用 setMaintenanceTemplateFile 使用自己的模板。
<?php // Load Nette Framework and autoloader generated by Composer require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/libs/functions.php'; // Base params $logDir = __DIR__ . "/log"; $tempDir = __DIR__ . "/temp"; // Debugger center $deploy = new DeployCenter\Application($logDir, $tempDir, "pass123"); $deploy->register("debug"); // Debugger maintenance support (optional) //$deploy->setMaintenanceTemplateFile("path/to/our/template.latte"); // If we want own maintenance template $deploy->checkMaintenance(); // Check maintenance, if in progress kill page and show maintenance template // Configure application $configurator = new Nette\Config\Configurator; ... ?>
如果您想在发布前通知用户,可以使用 AlertControl 组件,该组件传递维护对象。例如,我们可以在 bootstrap 中将其添加到容器中作为服务
<?php ... // Create container $container = $configurator->createContainer(); // Debugger center - add dynamic service Maintenance, for support AlertControl (optional) $container->addService("maintenance", $deploy->getMaintenance()); ... ?>
然后,例如,在您的 BasePresenter 中创建这个组件
注意:遗憾的是,我还没有找到一种方法来避免在服务动态传递时调用上下文。
<?php abstract class BasePresenter extends Nette\Application\UI\Presenter { /** * @return \DeployCenter\Maintenance\AlertControl */ protected function createComponentAlertControl() { $alertControl = new \DeployCenter\Maintenance\AlertControl(); $alertControl->setMaintenance($this->context->getService("maintenance")); return $alertControl; } } ?>
在模板中,如果希望在不久的将来(目前为 10 分钟)发生发布和可能的页面故障时显示消息,我们将渲染该组件
{control alertControl}