霜冻22/nette-deploy-center

生产环境部署管理中心,浏览日志、异常等。

v1.1 2013-11-18 14:02 UTC

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}