문제

도움이 되었습니까?

해결책

코 하나 3: 당신은 당신의 캐치 경로를 정의 할 수 있습니다 bootstrap.php 전에 Kohana::modules() 윤곽:

if (/* check if site is in under maintenance mode */) {
    Route::set('defaulta', '(<id>)', array('id' => '.*'))
        ->defaults(array(
            'controller' => 'errors',
            'action'     => 'maintenance',
        ));
}

또는 동일한 요청을 엉망으로 만들 수도 있습니다.

if (/* check if site is in under maintenance mode */) {
    echo Request::factory('errors/maintenance')
        ->execute()
        ->send_headers()
        ->response;
}

코 하나 2: 확장해야합니다 Controller 생성자의 '유지 보수 아래'페이지 디스플레이를 처리하지만 모든 컨트롤러가 바닐라 클래스 대신이 컨트롤러 클래스를 확장해야합니다).

abstract class Custom_Controller extends Controller {

    public function __construct()
    {
        parent::__construct();
        if (/* check if site is in under maintenance mode */) {
            $page = new View('maintenance');
            $page->render(TRUE);
            exit;
        }
    }
}

또는 후크 시스템을 사용하여 파일을 추가하여 hooks 폴더 (귀하의 후크를 활성화해야합니다 config.php):

Event::add('system.ready', 'check_maintenance_mode');

function check_maintenance_mode() {
    if (/* check if site is in under maintenance mode */) {
        Kohana::config_set('routes', array('_default' => 'errors/maintenance'));
    }
}

다른 팁

라우팅을 살펴보십시오 선적 서류 비치. You should be able to use a regular expression that redirects any uri to a specific controller/action. The only question left would be how to turn that rule on/off.

공통 헤더에서 데이터베이스 플래그를 확인할 수 있습니다 (아마도 데이터베이스 등에 연결되는 공통 포함이있을 것입니다). 플래그가 설정된 경우 특정 페이지를 렌더링하고 종료합니다 (모든 일반적인 정리 작업을 수행하십시오. 데이터베이스 연결을 닫는 것과 같습니다).

Apache를 실행하고 있습니까? 이것을 당신에게 추가하십시오 .htaccess 웹 루트의 파일 (또는 사이트의 Vhost 선언)에 모든 요청을 "유지 보수 아래"페이지로 리디렉션합니다.

Redirect 301 / /maintenace_page.html

나는 이것을 일어날 두 가지 아이디어를 생각할 수 있습니다.

  1. Larry가 말했듯이 정규식을 사용하여 모든 요청을 특정 위치로 리디렉션하십시오. 따라서 먼저 사이트가 유지 보수 모드 (데이터베이스 플래그 또는 구성 파일 설정을 사용하는 것)인지 확인한 다음, 그 경우 라우팅의 정규 표현식 기능을 사용하여 모든 트래픽을 한 장소로 리디렉션하십시오.

Kohana의 라우팅 : http://docs.kohanaphp.com/general/routing

PHP 정규 표현 : http://www.php.net/manual/en/reference.pcre.pattern.syntax.php

Kohana의 컨트롤러 : http://docs.kohanaphp.com/general/controllers

Index.php에서 in_mainenage라는 상수를 정의합니다

a에서와 같은 콜백을 만듭니다 후크 파일:

function in_maintenance()
{
    if(IN_MAINTENANCE)
    {
         Router::$controller = 'my_maintenance_controller';
         Router::$method = 'index';
    }
}

System.post_routing 이벤트에 추가하십시오.

Event::add('system.post_routing', 'in_maintenance');

참조 이벤트 / 후크 문서 후크 생성에 대한 자세한 정보.

이것을 토글하는 또 다른 방법은 파일을 확인하는 것입니다. 파일이 존재하면 유지 보수가 시작되므로 사이트를 끄십시오.

그렇다면 위에서 언급 한 일을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top